【问题标题】:Laravel - How to accomplish authentication by permission?Laravel - 如何通过权限完成身份验证?
【发布时间】:2018-01-27 22:03:32
【问题描述】:

我阅读了有关身份验证的文档,但我有点困惑。

我想创建一个通过权限登录用户的特征,想法是在属于应用程序任何部分(管理员、普通用户、客户服务)的任何控制器上创建方法,并从该方法发送权限trait login 方法的权限。

我遇到的问题是:如何通过权限认证用户?假设我有权限表,并且该表通过另一个表连接到用户表。 (多对多)。

这是否意味着我应该为应用程序的任何部分创建一个 Guard?

还有其他方法可以做到吗?

我确实可以查询权限,然后使用 Auth::attempt 来登录用户,但这是两个查询,我觉得这有点浪费。

谢谢

【问题讨论】:

  • laravel 中的认证和授权是两个不同的东西。权限与授权相关,要求用户已经登录(即使该登录发生在同一个请求期间)。
  • @apokryfos 我明白了,但是如果其中一位经理想登录控制面板,我该如何验证他的身份?我不希望他执行某个操作并被拒绝,我想在登录级别阻止他...
  • 为什么需要这样做。您可以允许他们通过 Auth 中间件登录,并通过“can”中间件阻止他们。没有理由以他们无法访问网站的特定部分为由拒绝有效登录

标签: laravel authentication laravel-5


【解决方案1】:

如果你把它分解,它很简单。

你有不同的用户,每个用户都有一些角色,一个角色有权限。 最好的部分是用户类型,每个用户类型都可以有角色。 现在只需要做的就是,将检查用户类型的用户重定向到其相关路由。

登录后重定向用户的最佳位置是AuthenticatesUsers class:

protected function authenticated(Request $request, $user){
    ...
}

【讨论】:

  • 我想你不明白我的意思,我的问题是如何通过权限验证用户而不是如何重定向用户...
  • 如果我理解你,你不能做你想做的事,正如我在上面提到的类名 AuthenticatesUsers ,那个 authenticated 函数是它在身份验证之后调用的第一件事,所以这就是你的地点,试一试。
  • 对于auth机制,A每个用户都是平等的,登录后条件才会出现。
猜你喜欢
  • 2019-04-30
  • 1970-01-01
  • 2018-03-09
  • 2021-03-10
  • 2015-07-25
  • 2018-03-03
  • 2020-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多