问题标签 [laravel-middleware]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1744 浏览

php - 在 Laravel 中,如果已经检查中间件,我应该检查控制器中的权限吗?

我创建了一个中间件,用于检查用户是否有权执行某项操作,并将此中间件添加到我想要保护的路由中,如下所示:

我的问题是,是否有必要再次检查updateCompany或中间件检查是否足够?

0 投票
2 回答
1400 浏览

laravel-5.1 - Laravel:自定义中间件应用于每条路线

我创建了一个中间件:

然后在路由中定义为:

当我运行它时.. 它适用于所有路线,甚至适用于/. 为什么会这样?

内核.php

0 投票
1 回答
259 浏览

php - 为什么 codeception 在 Laravel 中不应该运行的路由上运行中间件?

所以我是一个codeception新手,我正试图弄清楚如何使用它来测试我的web服务。我已经为authenticate路由编写了我的第一个简单测试,只是为了确保应用程序正确地吐出 JWT 令牌。测试看起来像这样:

在我的辩护中,我尝试了 Postman 的相同 POST,并且效果很好。

api.suite.yml

我在此测试中面临的问题是它没有将200 OK视为响应代码,而是将其视为响应代码500。后来我意识到我可以通过_output目录中相同的输出,我看到了这个错误:

无法从请求中解析令牌

现在令我惊讶的是,authenticate路由甚至不需要令牌,所以我继续查看我的应用程序中正在解析的令牌的位置。最后我意识到有一个叫做中间件的中间件ChangeDbKernal它看起来从除了authenticate路由之外的每个请求中检查令牌。它看起来像这样:

但是当我试图从内核中对此进行评论时,测试运行良好并给了我绿色。因此,当我从 Postman 和其他 ajax 请求尝试它时,不知何故这个中间件运行良好,但是当 Codeception 尝试请求时,if statement返回true显然是因为它查看令牌,这是我的测试失败的地方。

那么为什么会这样呢?Codeception 生成的请求是否与 Postman 或我前端的 ajax 应用程序生成的请求有所不同?如何解决这个问题?

0 投票
3 回答
1041 浏览

php - Laravel 在中间件中使用路由参数

找不到任何与我的情况特别匹配的东西。我有一个路由组定义为:

上面的组里面有几个资源路由。我正在尝试创建一个自定义中间件,该中间件将验证access_token参数并在参数无效时返回 400 响应。我希望能够在我的控制器中这样做:

我的问题不是“如何定义自定义中间件”,而是如何从自定义中间件的函数中访问access_token参数?handle

编辑:虽然建议作为重复的问题是相似的并且有答案,但该答案似乎已经过时和/或对我想要完成的工作不满意。

0 投票
1 回答
9359 浏览

php - 在 laravel 中间件中修改输入

某些服务向我的站点发出 HTTP 请求并传递一些输入。这个输入对我来说有一点错误的结构,所以我正在尝试修改它。

我制作了一个中间件并将这个中间件附加到我的路线上。句柄方法如下所示:

但是在我的控制器中,我得到了旧的输入。我也有点困惑,因为我也使用 FormRequest,而且我意识到这两个请求是不同的实体。那么如何修改中间件中的输入呢?

0 投票
1 回答
250 浏览

php - 使用中间件进行表操作 laravel 5.1

目前我正在 laravel 中开发一个中小型应用程序我在 laravel 中遇到中间件,我的问题是我可以使用中间件在我的表中进行更改,例如,在我的应用程序(食堂管理系统)中,当用户从菜单并提出订单请求,然后在将订单插入模型表之前,我想从他的余额中减去订单金额。我正在考虑这样做的原因是因为余额属性是用户表的一部分,订单金额是订单表的另一部分,我无法在它们之间开发任何数据关系(但我推导出它们之间的多对一关系) . 所以我不打算只使用数据关系做这件事,所以那是我遇到中间件的时候。所以帮我解决这个问题,我也可以在一个控制器功能中使用两个模型吗?

0 投票
1 回答
171 浏览

php - Laravel 中间件“只”为每条路线触发

无论我做什么 crud middlware 总是被解雇。$crud但是,只有在声明数组并且仅针对它包含的路由时才应该触发它。但是,并非每次都会触发。即使我说$crud = [];但是,如果我声明['only' => ['route1', 'route2']],那么它会按预期工作。

0 投票
2 回答
371 浏览

php - 在 laravel 5.1 中检查管理员角色

我正在使用 Laravel 框架做我的项目。一切似乎都很完美。但是,在我的登录部分,我想做一些事情,比如当用户登录系统时,它会检查“is_admin”列。如果“is_admin”列等于 1,它将直接进入管理页面。我一直在互联网上寻找,但我找不到这个问题的答案。我也确实使用了中间件,但它没有用。我不知道为什么。有人可以帮我解决这个问题。谢谢

0 投票
1 回答
455 浏览

php - Laravel 5.1 中间件用户类型重定向

我正在尝试在 Laravel 5.1 中制作一个应用程序。

在我的用户表中,我有 3 种类型的用户,管理员、代理和农民。在 users 表中有一个名为 user_type_id 的列,其中 admin 是user_type_id=1,agent 是user_type_id=2,farmer 是user_type_id=3

管理员有权执行代理几乎没有权限的所有操作。

问题是在使用中间件时,我的 Authenticate.php 和 AgentAuthenticate.php 中间件文件表现得好像它们是相同的,这意味着代理正在获得管理员的所有权力。有什么逻辑错误吗?这是代码。

agentAuthenticate.php(中间件)

验证.php

路由.php

0 投票
2 回答
524 浏览

redirect - 在laravel 5中使用中间件重定向循环

中间件代码:

if 语句中的代码导致循环重定向。并且“刹车”没有出现;Firefox 浏览器提示“页面未正确重定向”。

你们能帮帮我吗。

非常感谢!