【发布时间】:2017-01-22 15:44:50
【问题描述】:
我们可以将中间件与用户方法以外的方法一起使用吗?我的意思是……几乎在每个示例或解释中,他们都使用$request->user() 来检查用户的权限。
但是我想在$request->category() 等其他表中检查用户的权限。在那里我想检查用户是否是该特定类别的所有者。在此基础上,该类别的所有者可以在该类别中的各个部分(控制器)中移动,否则他将受到限制。
中间件可以吗?
============ 这里有更好的解释 ================
假设我拥有一个组(使用 Access_Specify> 0:Public,1:Member,2:Only Me)。现在其他用户可能/可能不订阅该组以成为该组的成员/公众。除此之外,群组还有专辑、页面、帖子等子部分。
现在,我想要在进入该组之前检查 2 个表 中即将到来的用户的权限。首先在组中(通过 Access_Specify),然后在 GroupMember 中的第二个,如果即将到来的用户是否是该组的成员。
案例条件:如果组的 Access_Specify 设置为 1(成员访问权限),则只有成员(该组的所有者)才能进入该组。
Group (Access_Specify= 0:Public, 1:Member, 2:Only Me) && GroupMember (UserStatus= 0:PendingForApproval, 1:JoinedAsMember)
如果(以上条件为真){
- 专辑
- 页数
- 发布
- 等等..
} 其他 { 抛出错误的用户 - 异常 }
======================================
在任何情况下,我都不想把这个条件放在控制器中,因为......我不能在每个子部分(控制器)中一次又一次地放置和检查。我想要像中间件一样的解决方案,检查用户,然后才处理请求。
【问题讨论】:
-
假设你已经在用户上定义了一个类别关系,最简单的方法是通过
$request->user()->category。 -
感谢@apokryfos,您在这里提供了良好且快速的逻辑。您的解决方案是可以接受的,但是 Andréas Lundgren 在下面描述了官方解决方案。再次感谢。
-
您好@apokryfos 请再次检查我的问题,我确实再次对其进行了编辑并解释了我在那里面临的确切问题。提前致谢。
-
是的,我可能没有正确理解您的要求。
-
这里有什么建议吗?
标签: php laravel-5 permissions frameworks laravel-middleware