我正在使用Laravel中的自定义登录和注销。现在,我希望通过中间件检查用户是否通过身份验证,然后他们将通过,否则将被重定向回登录页面。到目前为止,我尝试了以下方法:
public function handle($request, Closure $next)
{
if (! Auth::check()) {
return redirect('/');
}
return $next($request);
}它不工作,因为当我dd(Auth::check())时,它给我的输出是false。请帮我解决这个问题。这是我的登录码
$email=Auth::attempt(['email' => $request->login, 'password' => $request->password]);
$username=Auth::attempt(['username' => $request->login, 'password' => $request->password]);
if($username || $email)
{
$activity=new Activity;
$activity->user_id=Auth::id();
$activity->login_time=date('Y-m-d H:i:s');
$activity->save();
return redirect('home');
}
else
{
return back()->with('msg', 'Error!Enter Cedentials Correctly');
}发布于 2019-10-21 13:35:32
您的中间件需要在web中间件之后运行,因为web中间件负责引导会话。
此外,我不能完全确定您是否可以在控制器中为中间件组使用中间件方法。你也许可以,但我从来没有真正尝试过。但如果我是你,我会遵循默认结构,将路由放入一个web路由组中。
发布于 2019-10-26 16:53:19
如果你使用的是Laravel Auth,那么我认为这对你来说应该是可行的。
if (\Auth::user()->id !== null) {
return redirect('/');
}
return $next($request);https://stackoverflow.com/questions/58480242
复制相似问题