laravel的权限包laravel-permission,里面有个guard_name表示什么意思?

阅读 7.1k
3 个回答

每一个 Guard 代表一个用户组。
我们可以有多组用户系统,比方说用户管理员都在不同的用户组中。


补充:
上面的“用户组”,可能不太准确,准确的说,应该是一个认证类型。
例如Web Guard 用来认证前台用户、Admin Guard 用来认证后台用户、Api Guard 用来认证为第三方提供的接口。

如果只是用户组的区别,那么将无需定义多个Guard。只有在你的认证要素不尽相同的情况下,才需要使用多个Guard 。例如,Web Guard 通常使用用户名密码来认证。而Api Guard 使用token或者OAuth

另外,认证后的权限策略也可能有所不同,才需要不同的Guard ,例如Web Guard 可能是只能修改自己的发布的内容,而Admin Guard 却可能是通过权限来判定能操作哪些用户组发布的内容。

简而言之,Guard 是在RBAC权限系统更上一层的东西。用来区分RBAC无法区分(覆盖)的部分。

每一个 Guard 代表一个用户组。

你可以用 Guard 来区分出前后台,实现多个用户认证系统。

在 auth.php 中添加好 Guard 之后,就可以使用:

  1. Auth::Guard('admin')->user(); // 获取 Guard 为 admin 的用户认证;
  2. Auth::Guard('web)->user(); // 获取 Guard 为 web 的用户认证;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进