php - Laravel 中的 Guard 自定义用于自定义身份验证
问题描述
我已经阅读了 Laravel 文档以进行自定义身份验证。我研究了Guard Authentication:
Guard 自定义 您还可以自定义用于验证和注册用户的“Guard”。首先,在 LoginController、RegisterController 和 ResetPasswordController 上定义一个保护方法。该方法应返回一个保护实例:
use Illuminate\Support\Facades\Auth;
protected function guard()
{
return Auth::guard('guard-name');
}
以上部分来自 Laravel 文档。我已经开发了 CRUD 操作项目,这个操作只能由管理员级别的用户来完成。为此,我认为后卫定制会是更好的选择。在上述情况下,这里的“守卫名称”是什么?是被授予管理员级别权限的用户的名称吗?
还有一种情况是管理员可以将管理员的权限分配给其他用户。由于 Laravel 文档中缺乏详细的解释,我无法弄清楚如何在上述情况下使用警卫。还有什么更好的选择?
解决方案
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;
}
}
推荐阅读
- javascript - 无法访问在父组件、子组件中获取的 API 调用
- postgresql - 有人可以解释为什么我有这个错误列不存在吗?
- python - 如何遍历表并打开满足条件的选项卡
- encryption - 如何隐藏暗影键
- nginx - Nginx 代理通过重写和正则表达式
- python - 数据框元组
- python - 如何将字典中的列表更改为键和他的值?
- python - 为什么它不允许我打印“玩家 1 是 x”
- python-3.x - 在 Docker 容器中运行命令的 Python 脚本
- javascript - 如何在 Google Maps API 中获取我的地理围栏的 GeoJSON?