web-dev-qa-db-ja.com

Laravel= Authミドルウェアを使用

Laravel 5.1には本当に最小限のドキュメントしかありませんでした。Authミドルウェアを使用してルートを保護する方法について明確なアイデアが必要です。

ドキュメントには、「ミドルウェア」=>「auth」パラメーターを追加するように指示されています。またはできる

    public function __construct() 
    {
      $this->middleware('auth');
    }

しかし、実際のユーザー認証と保護されたルートから/ loginへの自動リダイレクトに認証ミドルウェアを使用するにはどうすればよいですか?

9
harish

Kernel.php-次のような保護された$ routeMiddlewareの下に登録済みミドルウェアがあります。

/**
 * The application's route middleware.
 *
 * @var array
 */
protected $routeMiddleware = [
    'auth' => 'App\Http\Middleware\Authenticate',
    'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
    'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
];

App\Http\Middleware\Authenticateを使用して「auth」が登録されていることがわかります。

次に、このパスをたどることができます-/ app/Http/Middleware/Authenticate.phpを開くと、パブリック関数ハンドルが見つかります:

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($this->auth->guest())
        {
            if ($request->ajax())
            {
                return response('Unauthorized.', 401);
            }
            else
            {
                return redirect()->guest('auth/login');
            }
        }

        return $next($request);
    }

ここでリダイレクトを管理します。必要に応じて変更したり、カスタムミドルウェアを作成したりできます。

最後に-それはドキュメントに書かれているように-認証される必要があるコントローラーで、追加します

public function __construct() 
{
  $this->middleware('auth');
}

提供されているミドルウェアがニーズに合わない場合は、カスタムミドルウェアを作成できます。

12
Angel M.

On laravel 5.2登録フォームまたはログインフォームビューを非表示にする場合は、ミドルウェアを次のように使用する必要があります。

$this->middleware('mymiddleware', ['only' => ['register', 'showRegistrationForm', 'login', 'showLoginForm']]);

OR

$this->middleware('mymiddleware', ['except' => ['register', 'showRegistrationForm', 'login', 'showLoginForm']]);

これは、登録ルートとログインルートがAuthControllerのpostメソッドであり、showXxxxFormがフォームビューであるためです。

それが誰にも役立つことを願っています。