php - Laravel 5 中的委托(delegate)路由保护 - 首先检查 Auth

标签 php laravel laravel-5

出于某种原因,我有一个思维障碍,无法弄清楚什么可能是一个非常简单的修复。

我有一个 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/

相关文章:

php - 构建轻量级面向公众网站的工具箱/框架

php - 从 PHP 文件生成并使用 XSLT 翻译的 XML 获取 PDF 输出

php - 更新命令在 PHP 中无法正常工作

拉拉维尔 5 : How to use firstOrNew with additional relationship fields

php - Laravel 查询无法正常工作

php - 如何使用 Yii2 将模型数据和关系模型导出到 json?

php - 仅当下拉值为 'other' 时才验证 'other' 字段

laravel - WAMP + Composer + Laravel + PhpStorm

laravel 5.6 护照。 postman 加载无输出

php - 我想计算我在 mysql 中的所有重复值,但我明白了