繁体   English   中英

如何在内置身份验证的Laravel 5.8s上验证用户角色?

How do I validate User role on Laravel 5.8s Built in Authentication?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我的用户表上有一个用户角色列。

  • 代表超级管理员,
  • 代表其他用户

我已经检查了很多Laravel教程,但是它们都没有帮助我解决这个问题。

我发现了一些方法,例如替换整个Laravel的Login Controller并用我们自己的替换Authenticate Users特性。 我想用最少的代码更改来解决我的问题。 可能吗?

如何在该Trait方法中以最少的代码更改实现它?

public function login(Request $request)
{
    $this->validateLogin($request);


    if (method_exists($this, 'hasTooManyLoginAttempts') &&
        $this->hasTooManyLoginAttempts($request)) {
        $this->fireLockoutEvent($request);

        return $this->sendLockoutResponse($request);
    }

    if ($this->attemptLogin($request)) {
        return $this->sendLoginResponse($request);
    }


    $this->incrementLoginAttempts($request);

    return $this->sendFailedLoginResponse($request);
}
2 个回复

您可以像在用户模型中添加isSuperAdmin函数一样简单。 登录后,只要需要检查就可以在用户上调用此函数。

在模型User.php中

  public function isSuperAdmin()
  {
      return $this->user_role == 1;
  }

然后,您还可以制作使用此功能的中间件。

php artisan make:middleware SuperAdmin

在此中间件的处理功能( app / http / middleware / SuperAdmin.php )中:

public function handle($request, Closure $next)
{
    if (Auth::check() && Auth::user()->isSuperAdmin()) {
        return $next($request);
    }
    return redirect('some-route-for-unauthorized-users');

}

然后,在您的路由(可能是web.php)中,您可以使用此中间件来保护路由:

Route::group(['middleware' => ['auth', 'superadmin']], function () {
    ... put protected routes here ...
});

        /**
         * Create a new controller instance.
         *
         * @return void
         */
        public function __construct() {
            $this->middleware('guest')->except('logout');
        }

        protected function credentials(Request $request)
        {
            $credentials = $request->only($this->username(), 'password');
            $credentials['role'] = '1';
            return $credentials;
        }
1 Laravel使用用户图像内置身份验证

我使用的是Laravel内置的auth系统,可以在新的Laravel项目中运行php artisan make:auth命令轻松找到。 注册时,我也想给予用户上传他们个人资料图片的能力。 因此,我在注册表格中添加了一个名为profile_picture的新字段。 我如何从后端接收文件? ...

2 Laravel内置身份验证

在Laravel内置的身份验证中,在许多可用的类和接口中,我将其范围缩小到Illuminate\\Support\\Facades\\Auth和Illuminate\\Auth\\SessionGuard以试图了解身份验证的工作原理,任何人都可以解释一下我的原理或两者的相关性,以便能够调用Aut ...

4 Firebase Auth 内置身份

我正在构建一个 web 平台,以使用 Firebase Auth 和 Firestore 将学习者与导师联系起来。 我将学习者的用户信息存储在 Firestore 集合中,将导师的信息存储在另一个集合中。 我正在构建一个 function,它可以在登录时检测客户是学习者还是导师。 我正在考虑的一种解 ...

7 django:没有内置身份验证的用户登录和身份验证问题

我正在努力使用登录系统。 在这一点上,我已经看到了关于该主题的许多不同内容,使我有些失落。 我尝试使用内置的身份验证系统,但是我无法使其与django-tenant一起使用,因为如果我正确理解它,则需要与内置的User模型一起使用。 然后我想我的潜在问题是我不知道如何将Django用户模型与已有的 ...

8 Laravel内置用户身份验证

我正在使用Laravel的Auth软件包进行用户注册和登录。 在注册时,连同电子邮件一起,我将roll_no字段保留为唯一。 现在,当我使用相同的电子邮件ID注册两次时,它给我一条错误消息,表明该电子邮件已存在于我们的记录中。 但是,当我用相同的no进行两次注册时,它会抛出一个SQL查 ...

9 Laravel 5内置的用户身份验证

我正在尝试使用内置于用户身份验证的Laravel5。在这方面,我想在成功登录后将用户重定向到特定的路由/页面/控制器。我正在尝试更改complied.php文件的代码。 我正在尝试更改以下代码的/home ,但无法正常工作。 谢谢 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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