在向路线添加中间件时,访问者需要通过"传递"访问者可以看到生成的页面之前的中间件 我想知道是否以及如何检查用户是否理论上会传递任意中间件(他当前的请求不需要)
即
我有3个中间件1
,2
和3
我的路由启用了中间件1
和2
,如何检查用户是否会通过中间件3
?
答案 0 :(得分:4)
正如其他用户试图在评论中向您解释的那样,中间件不适合这样做。中间件用于在任何给定请求到达任何视图之前检查它。
您可以使用custom guard,这样您就可以按照@ distribut0n的建议使用身份验证检查。
在这个自定义身份验证后,您可以使用Request
外观来访问必要的信息,当然您可以使用Auth::user()
获取更多信息,这两个项目的组合应该可以让您检查几乎任何可能的请求。
为了防止重复代码,最好只在自定义防护中声明逻辑并使用它来检查中间件。
答案 1 :(得分:-2)
你可以做什么,你可以声明一个函数来检查你的中间件最初会检查的内容,如下所示
public function passesTest() {
return true; // check something here
}
然后你应该能够检查用户是否使用下面的代码传递了它,可以在中间件和你的视图中访问该函数。
if (Auth::passesTest()) {
// do something
}
这样,如果你想修改它,你只需要在一个地方改变它。