我想在我的Laravel 9项目中做一个中间件,如果用户不活动,他们会自动注销。在我的中间件类中,如下所示。
public function handle(Request $request, Closure $next)
{
if (Auth::user()->is_active != 1) {
return Auth::logout();
}
return $next($request);
}
但是当我尝试的时候,我得到了这样的错误。
我做错什么了吗?
2条答案
按热度按时间7fhtutme1#
你已经很接近了,只需要做一些小的改动。
所以问题是你的中间件通常会返回
$next($request);
,否则它会破坏Laravel的内部管道(你可以阅读这篇很好的博客文章来了解更多关于中间件和管道Understanding Laravel Pipelines的信息)。但是在您的情况下,返回该值可能不起作用,因为您的
auth
中间件必须在此之前已经执行过。最简单的处理方法是注销并中止(假设在这种情况下返回401响应),类似于
bf1o4zei2#
logout函数不会返回该对象,也无法从中间件进行重定向。
你能做的是