Laravel 5 rydurham/sentinal:登录后,根据组成员身份重定向


Laravel 5 rydurham/sentinal: post-login, redirect based on group membership

我有一个使用Sentinal的Laravel5.1应用程序来确保安全。现在我们只使用两个股票组,用户和管理员。最近,我邀请了一位同事开始测试我的应用程序,所以我为他创建了一个用户。我忘了将他添加到管理员组。当他登录时,无限重定向循环开始,因为身份验证重定向将用户发送到名为 home 的路由,但如果您不在 Admins 中,则无法加载 home,并被重定向回登录。这会将您重定向回家。

这是一项业务规则,我们只希望管理员使用他们需要进行身份验证的应用部分,但如果你不是管理员,我们希望做一些比发送 403 更友好的操作。我想将经过身份验证的用户发送到特定路由,甚至只是将他们重定向到静态页面。

我想我几乎已经厌倦了谷歌试图获得如何做到这一点的线索。似乎这应该很容易。我可以开始破解供应商代码,但我不敢相信没有更优雅的方法可以做到这一点。

对不起,如果这是一个愚蠢的问题。我对拉拉维尔相当陌生。

好的伙计们,我得到了这个工作。我写了一个名为RedirectIfNotAdmin的中间件。

我找不到可以告诉我组成员身份的哨兵或守卫属性/方法,所以我为我的用户和组表制作了简单的雄辩模型。我在这些模型之间创建了一个多对多。在我的中间件中,我使用 Sentry 来获取用户 ID,并以此实例化我自己的一个用户模型。在我的用户模型中,我实现了一个方法 isAdmin((,它获取用户的组,如果其中一个是"管理员",则返回 true。

如果 isAdmin(( 方法返回 false,我会重定向到一个解释用户没有权限的页面。

我预期的要详细得多的解决方案。我真的以为Rydurham/Sentinal会解决这个问题。也许Sentinal确实有一个更干净的解决方案,而我太密集了,找不到它。如果有人想评论解决这个问题的更好方法,我全都听见了。