繁体   English   中英

具有Laravel权限的Laravel角色

[英]Laravel roles with laravel-permission

我正在使用laravel许可包。 我创建了2个角色adminuser ,并将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM