我有一个使用Sentinal的Laravel 5.1应用程序用于安全性。现在我们只使用两个股票组,即用户和管理员。最近我邀请了一位同事开始测试我的应用,所以我为他创建了一个用户。我忘了将他添加到Admins组。当他登录无限重定向循环时,因为身份验证重定向将用户发送到名为home的路由,但如果您不在管理员中,则无法加载回家,并重定向回登录。这会将你重新引导回家。
这是一项商业规则,我们只希望管理员使用他们需要进行身份验证的应用程序部分,但如果您不是管理员,我们想做一些比发送403更友好的事情。我想将Authenticated Users发送到特定路由,甚至只是将它们重定向到静态页面。
我认为谷歌几乎已经疲惫不堪,想要了解如何做到这一点。看起来这应该是轻松的。我可以开始破解供应商代码,但我不能相信没有更优雅的方法来做到这一点。
对不起,如果这是一个愚蠢的问题。我对Laravel来说相当新鲜。
答案 0 :(得分:0)
我找不到可以告诉我组成员资格的Sentry或Guard属性/方法,所以我为我的用户和组表制作了简单的'eloquent模型。我在这些模型之间创建了多对多。在我的中间件中,我使用Sentry获取用户ID,然后我实例化了我自己的一个用户模型。在我的用户模型中,我实现了一个方法isAdmin(),它获取User的组,如果其中一个是'Admins',则返回true。
如果isAdmin()方法返回false,我会重定向到一个解释该用户没有权限的页面。
比我预期的我需要写的更精细的解决方案。我真的以为rydurham / sentinal会解决这个问题。也许Sentinal确实有一个更清洁的解决方案,我太密集了,找不到它。如果有人想评论解决这个问题的更好方法,我会全力以赴。