出于某种原因,我有一个思维障碍,无法弄清楚什么可能是一个非常简单的修复。
我有一个 Laravel 5 应用程序,并且正在使用 Zizaco 的 Entrust 包进行访问控制。
我想保护路由,所以在 routes.php 中使用路由保护,如下所示:
Entrust::routeNeedsRole('passtypes', array('admin'), null, false);
除了用户的 session 已过期或他们未登录并尝试访问路由时,它按预期工作。
在这种情况下,我希望首先检查 Laravel 的身份验证,然后重定向到登录页面;但是 Entrust 首先重定向到 403 错误;这对于能够查看该页面但被告知他们没有访问权限而不是他们未登录/ session 已过期的用户来说是令人困惑的。
我在 Controller 中而不是在路由中启动身份验证:
public function __construct()
{
$this->middleware('auth');
}
所以只需要知道如何获得相同的功能,但要在路由权限要求之前检查身份验证。
谢谢
最佳答案
我认为 Entrust::routeNeedsRole
在 Controller 之前触发。您可以将 Entrust
移动到中间件吗?如果用户已登录,您可以检查中间件,然后检查他是否具有所需的角色。
关于php - Laravel 5 中的委托(delegate)路由保护 - 首先检查 Auth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29769571/