我用 php artisan make:auth生成了一个登录注册的模块我分析源码的时候 发现 app\Http\Controllers\Auth\LoginController.php内存在这样一段代码: public function __construct()
{
$this->middleware('guest', ['except' => 'logout']);
}我看到$this->middleware代码后先是一愣... 后来在网上找到资料原来这是使用了一个中间件但我对后面的['except' => 'logout']); 实在不懂,寻求大神给予讲解一下。另外:except是源码里自己定义的 还是laravel自带的?
2 回答
已采纳
流逝在指尖活在当下
TA贡献4条经验 获得超1个赞
这个是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');
- 2 回答
- 0 关注
- 4695 浏览
添加回答
举报
0/150
提交
取消