问题标签 [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 投票
2 回答
908 浏览

laravel-routing - Laravel 5.2 如何根据控制器更改 RedirectIfAuthenticated 的重定向?

我想知道是否可以为我的每个控制器设置不同的身份验证重定向?目前,所有内容都重定向到 /home。这适用于我的 HomeController。但是对于 ClientController,我希望它重定向到 /client(如果经过身份验证)而不是 /home。我是否必须为每个控制器制作一个新的中间件,或者有没有办法通过重用身份验证来实现这一点?

重定向IfAuthenticated.php

我的 ClientController.php 上有这个

提前致谢!对 Laravel 和中间件来说相当新。

0 投票
1 回答
1271 浏览

laravel - Laravel 和 Sentinel:混合角色中间件进行授权

我是 Laravel 新手(非常新手),在 Laravel 5.2 上使用 Cartalyst Sentinel 来利用角色授权。

在管理部分,我有三个(或更多)角色,即“管理员”、“代理”和“作者”。

我也有一些部分应该具有混合角色访问权限,例如:

  • 仪表板(所有角色均可访问:管理员、代理、作家)
  • 用户(可访问:管理员)
  • 订单(可访问:管理员、代理)
  • 页面(可访问:管理员,作家)
  • no_admin_here(可访问:代理,作家)

目前我设法让它只处理两个角色,但现在我被卡住了。

到目前为止我所做的(我只放了必要的代码):

路由.php

SentinelCheck 中间件(在 Kernel.php 中命名为“检查”)

SentinelAdmin 中间件(在 Kernel.php 中命名为“admin”)

SentinelAgent 中间件(在 Kernel.php 中命名为“代理”)

正如我所说,到目前为止一切都很好,但是当我尝试混合角色时,事情就搞砸了;即我不能写这样的路线:

因为“代理”永远不会到达该部分,因为“管理员”中间件会阻止并注销他。而且,同样,我不能将所有其他角色混合在一起:

ETC..

那么,是否有一种(简单的)方法可以轻松混合角色对部分的访问?在此先感谢您的帮助

0 投票
1 回答
78 浏览

laravel-5.2 - Laravel 5.2-限制用户访问

我正在做一个 Laravel 5.2 项目,我有用户、旗帜和国家。我试图实现的是每个用户都可以单击“标志”菜单,它应该显示用户所在国家/地区的标志列表。

所以用户有country_id

标志有 country_id。

目前,我可以显示每个用户及其各自国家/地区的标志。

这是路线。

风景

和我的控制器

问题是,如果我将 url 上的县 id 更改为其他任何内容,它将显示另一个国家/地区的标志,我如何限制它只能在用户国家/地区与 url 国家/地区 id 匹配时才能访问?我读过一些关于中间件的东西,但老实说我不知道​​如何使用它。

0 投票
1 回答
210 浏览

laravel-routing - RESTful 控制器上的 Laravel 5.2 自定义中间件级别

所以从根本不使用任何框架,我最终强迫自己使用 LARAVEL 5.2,因为我厌倦了一遍又一遍地重写自己的“框架”。

反正!

我想我现在非常熟悉 Laravel 框架及其依赖项。

但现在我需要指导如何以最聪明的方式做到这一点。

我想创建一个基于公司 DC 的中间件。

现在每个用户都由 phpenvget("username");使用重写的“auth”中间件进行身份验证。到目前为止,一切都很好。(顺便说一句,服务器不在 DMZ 中)。

问题是,我们的团队认为我们应该用所有用户填充一个数据库表并给他们一个“权限级别”,比如说 1 到 3,其中 1 是“只读”,2 是“读取+修改”和3 是使用我们的 restful 控制器“读取+创建+修改”。但。

因为我们使用的是 restful 控制器,所以我真的不能给他们单独的中间件吗?我是否必须手动更改我的 routes.php 中的每个 RESTful 资源才能做到这一点?或者我可以用另一种方式吗?我想让它尽可能简单。

有什么建议么?

提前致谢(为 typsos 保留)

0 投票
1 回答
1006 浏览

php - Laravel 中间件在某些资源路径上不起作用

我正在按照教程进行访问级别限制:

https://gist.github.com/amochohan/8cb599ee5dc0af5f4246

我能够以某种方式使其工作,但是我需要开始工作,这不在本教程中。

前提是我已按照教程进行操作。我已经设置了这个资源路线:

所以我想要的只是将roles中间件应用于资源路由,但在该资源中具有特定路由,假设我想应用于index唯一的,所以我有上面的那个路由。

当我去:

它工作正常,中间件roles工作正常。但是为什么当我去:

我正进入(状态

所以我没有找到路线错误。这是为什么?但是当我这样做时

然后它工作正常,但中间件适用于所有:

我希望它只在索引中。

我的代码:

内核.php

检查角色.php

0 投票
3 回答
1374 浏览

php - 在 Laravel 全局中间件中设置 Monolog

在我的本地环境中,我希望所有日志(所有标志)都进入浏览器的控制台(BrowserConsoleHandler),然后进入默认的StreamHandler. 在生产中,我希望将错误和其他关键消息发送到电子邮件,然后存储在数据库中或(如果失败)到日志文件(默认StreamHandler

我想在我创建的全局中间件中设置它,现在看起来像这样:

这不起作用(消息仅存储在日志文件中,未显示在控制台上)。我想不通的是如何让Log外观知道这个新的处理程序,因为很明显,这里的事情只是在函数的范围内改变。我知道我可以做到,bootstrap/app.php但现在获得环境不是为时过早吗?另外,如果我需要将日志保存到数据库,它必须已经连接,我猜

0 投票
1 回答
333 浏览

php - Laravel 5.2 不显示注册错误

我将我的路线添加到web middleware. 当我null在寄存器中发布值时,它不会显示验证错误。但是当我web middleware从我的路线中删除时,它可以正常工作。

它不起作用,但是

正常工作

内核.php

0 投票
1 回答
1368 浏览

session - Laravel 5.2:未按要求设置会话存储。使用 old() 的刀片模板出错

我正在使用 PHPUnit 4.0、Laravel 5.2、PHP 5.5.9 进行测试,并不断收到错误 ERROR: exception 'RuntimeException' with message 'Session store not set on request。在 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Request.php:85

为了排除它,启用中间件。

如果我从表单中删除 {{ old('username') }},错误就会消失。我已经使用 old() 方法看到了几篇关于这个问题的帖子;但是,我更新了 kernel.php,将中间件组下的路由移动到引用“web”,甚至将启动会话移动到 kernel.php 中的默认中间件 array()。我也尝试过从 TestCase.php 调用会话。似乎没有一个论坛有一个可行的解决方案。语法中是否缺少某些内容,或者 Laravel 中是否存在错误?

我的 kernel.php 文件看起来像

我的 signup.blade.php 看起来像:

我的 routes.php 看起来像:

我什至尝试向 testCase.php setUp 添加一个新块,但没有任何运气:

0 投票
1 回答
476 浏览

laravel - Laravel 5.2:RouteCollection.php 第 219 行中的 MethodNotAllowedHttpException - 更新表单

我有一个表格,我正在尝试更新表格。在表单中,'name'是一个唯一字段(在请求页面和表格中添加了唯一条件,名称设置为唯一)。当我尝试更新表单时(我提供了值,表中已经存在),它显示“RouteCollection.php 第 219 行中的 MethodNotAllowedHttpException”错误。

如果我用不在表中的不存在的名称更新“名称”,它将毫无问题地工作。

错误

路由器

要求

布局页面

0 投票
1 回答
745 浏览

laravel - Laravel - 中间件后清空 $request

在我的控制器中,我无法从中获取数据,$request因为在中间件之后它是空的。

出于某种原因,当我调用控制器方法时,数据被设置在$request中间件中,我可以访问它并检查它,但只要我这样做:

in 控制器是$request->all()一个空数组。

我试图删除所有middleware功能,但没有任何改变。

可能是什么原因?

这现在是我的中间件:

这是控制器: