![](/img/trans.png)
[英]UUID Spatie/Laravel-Permission SyncPermission Not Working
[英]Laravel roles with laravel-permission
我正在使用laravel许可包。 我创建了2个角色admin
和user
,并将admin
角色与权限Access CMS
关联。 我还创建了两个用户,一个具有admin
角色,一个具有user
角色。
我已经将所有admin
路线都放在AdminMiddleware
后面:
Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'isAdmin']], function() {
// Routes
}
中间件来自本教程 :
public function handle($request, Closure $next)
{
if (!Auth::user()->hasPermissionTo('Access CMS')) {
die('aargh');
}
return $next($request);
}
这适用于具有admin
角色的用户。 问题是,当我与其他用户登录时,它die
(应该如此),但该用户仍保持登录状态。即,如果在此尝试后我回显Auth::user()
,它将显示非admin
用户。 我期望的是,它完全可以阻止该用户登录。 我想念什么?
可能不是最好的选择,但是您可以尝试。
Auth::logout();
一旦用户注销,然后将其返回家中。
您缺少首先执行auth
中间件的信息。 中间件按照它们在数组中声明的顺序执行。 路由组
要实现完全不登录,您将不得不更改中间件的顺序,但是由于无法对用户进行身份Auth::user()
,因此您将无法再使用Auth::user()
。 因此,要在没有Auth::user()
情况下执行此Auth::user()
您必须自己查询数据库以查找用户对象,然后检查权限。 但是不建议这样做。 为什么对用户进行身份验证完全无关紧要?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.