2016-07-27 5 views
0

Laravel 5.2では、テーブルにhas_loginフィールドを追加しました。Laravelでのログインを無効にする5.2

has_loginusersテーブルの値0の場合、ユーザのログインを防止するロジックは追加してください。 AuthController.hpファイルでlogin()/authenticate()関数を使用せずに、認証にAuthController.phpを使用し、use AuthenticatesAndRegistersUsersを使用します。ログインは正常に動作します。

+0

この論理は、ミドルウェアのフォルダ内Authenticate.phpにする必要があります:私は何人かの人々があまりにもこれを行うと思いますけれども

<?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; class RequireHasLogin { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @param string|null $guard * @return mixed */ public function handle($request, Closure $next, $guard = null) { if (Auth::guard($guard)->check()) { if (!Auth::guard($guard)->user()->has_login) { Auth::logout(); if ($request->ajax() || $request->wantsJson()) { return response('Unauthorized.', 401); } return redirect()->guest('/auth/login'); } } return $next($request); } } 

はここミドルウェア例です。 –

+0

@MarkoMilivojevic Middlewareフォルダ内のAuthenticate.phpとコントローラのAuthController.phpの違いは何ですか? –

+0

すべてのリクエストがそのミドルウェアを通過するためです。 kernel.phpには$ routeMiddlewareがあります。 –

答えて

1

を私は個人的にミドルウェアでこれを行う傾向にあるが、あなたはそれの外にも行うことができます。

Auth::guard()->attempt(["email" => $email, "password" => $password, "has_login" => true]) 
+0

' RequireHasLogin'クラスをどこかに指定する必要はありますか? –

+0

はい。 'app/Http/Kernel.php'の' $ routeMiddleware'に追加します – SysVoid

+1

私はあなたの問題を解決しましたか? – SysVoid

関連する問題