首页 文章

Laravel中的Guard自定义用于自定义身份验证

提问于
浏览
0

我已经浏览了Laravel文档以进行自定义身份验证 . 我研究了Guard身份验证:

Guard Customization 您还可以自定义用于验证和注册用户的"guard" . 首先,在LoginController,RegisterController和ResetPasswordController上定义一个guard方法 . 该方法应该返回一个警卫实例:

use Illuminate\Support\Facades\Auth;

protected function guard()
{
    return Auth::guard('guard-name');
}

以上部分来自Laravel文档 . 我开发了CRUD操作项目,此操作应仅由管理员级别用户完成 . 为此,我认为后卫定制将是更好的选择 . 在上面的例子中,“守卫名字”在这里是什么?它是具有管理级权限的用户的名称吗?

还有一种情况是管理员可以将管理员的权限分配给其他用户 . 由于缺乏Laravel文档中的详细说明,我无法弄清楚如何在上述情况下使用guard . 什么可以是更好的选择?

1 回答

  • 0

    guard-name 是您的自定义警卫的名称 . 还有一个关于如何添加自己的后卫(https://laravel.com/docs/5.6/authentication#adding-custom-guards)的完整示例 .

    警卫在那里定义不同的身份验证方法(例如基于会话或令牌) . 对我来说,这听起来像是在寻找Laravel的大门和政策 . 有了这些,您可以针对给定资源授权用户 . https://laravel.com/docs/5.6/authorization

    使用策略时,您可以定义过滤器 . 此过滤器将在策略上的任何其他方法之前调用 . 因此,使用 before 过滤器,您可以检查用户是否为管理员 .

    public function before($user, $ability)
    {
        if ($user->isSuperAdmin()) {
            return true;
        }
    }
    

相关问题