使用Laravel Auth中间件

har*_*ish 9 php authentication middleware laravel laravel-5.1

Laravel 5.1真的有很少的文档..我需要清楚如何使用Auth middileware保护路由..

文档告诉添加"middleware"=>"auth"参数进行路由.或者可以做

    public function __construct() 
    {
      $this->middleware('auth');
    }
Run Code Online (Sandbox Code Playgroud)

但是如何使用Auth中间件进行实际用户身份验证并自动重定向到受保护路由/登录?

Ang*_* M. 12

在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',
];
Run Code Online (Sandbox Code Playgroud)

您可以看到使用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);
    }
Run Code Online (Sandbox Code Playgroud)

这里是管理重定向的地方,您可以根据自己的需要对其进行修改,也可以创建自定义中间件.

最后 - 因为它是在文档中编写的 - 在控制器中,需要进行身份验证,您将添加

public function __construct() 
{
  $this->middleware('auth');
}
Run Code Online (Sandbox Code Playgroud)

如果提供的中间件不符合您的需求,您可以创建它.


Bru*_*ilh 6

在laravel 5.2上,如果要隐藏注册表单或登录表单视图,则应使用中间件:

$this->middleware('mymiddleware', ['only' => ['register', 'showRegistrationForm', 'login', 'showLoginForm']]);
Run Code Online (Sandbox Code Playgroud)

要么

$this->middleware('mymiddleware', ['except' => ['register', 'showRegistrationForm', 'login', 'showLoginForm']]);
Run Code Online (Sandbox Code Playgroud)

这是因为注册和登录路由是AuthController上的post方法,而showXxxxForm是表单视图.

希望它能帮助任何人.