php laravel中auth自动生成的登录页源码有一处不懂(中间件)

我用 php artisan make:auth生成了一个登录注册的模块

我分析源码的时候 发现 app\Http\Controllers\Auth\LoginController.php内存在这样一段代码:

    public function __construct()
    {
        $this->middleware('guest', ['except' => 'logout']);
    }

我看到$this->middleware代码后先是一愣...  后来在网上找到资料原来这是使用了一个中间件

但我对后面的['except' => 'logout']); 实在不懂,寻求大神给予讲解一下。

另外:except是源码里自己定义的 还是laravel自带的?

EnzoLiu
浏览 4606回答 2
2回答

流逝在指尖活在当下

这个是laravel框架里面自带的,中间件就是控制用户是否能访问的一种机制。在文件 vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php 77行    /**      * Determine if the given options exclude a particular method.      *      * @param  string  $method      * @param  array  $options      * @return bool      */     protected static function methodExcludedByOptions($method, array $options)     {         return (isset($options['only']) && ! in_array($method, (array) $options['only'])) ||             (! empty($options['except']) && in_array($method, (array) $options['except']));     }在Controller设置中间件的时候可以设置: only 针对某个方法添加中间件,或者 except 除了这个方法之外的方法都添加中间件methodExcludedByOptions 方法是判断是否在这个方法中使用中间件,返回值是布尔值 true使用中间件,false不使用中间件排除特定的方法不使用中间件$this->middleware('guest:admin', ['except' => 'login']);在指定的方法中使用中间件$this->middleware('guest:admin', ['except' => 'logout']);推荐将中间件写在路由中Route::get('logout', 'AuthController@logout')->middleware('auth:admin');

慕先生7847717

出去,退出登录这个请求不需要,验证
打开App,查看更多内容
随时随地看视频慕课网APP