Php 如何检查用户是否登录中间件
我正在使用Laravel中的自定义登录和注销。现在我想通过中间件检查用户是否经过身份验证,然后他们将通过,否则他们将重定向回登录页面。到目前为止,我试过:Php 如何检查用户是否登录中间件,php,laravel,laravel-middleware,Php,Laravel,Laravel Middleware,我正在使用Laravel中的自定义登录和注销。现在我想通过中间件检查用户是否经过身份验证,然后他们将通过,否则他们将重定向回登录页面。到目前为止,我试过: public function handle($request, Closure $next) { if (! Auth::check()) { return redirect('/'); } return $next($request); } 它不工作,因为当我dd(Auth::check())时
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');
}
您的中间件需要在web中间件之后运行,因为web中间件负责启动会话
另外,我不完全确定您是否可以在控制器中为中间件组使用中间件方法。你也许可以,但我从来没有试过。如果我是你,我会遵循默认结构,将路由放在web路由组中。我认为在控制器顶部使用以下功能是最好的方法:
public function __construct()
{
$this->middleware('auth');
}
如果您在控制器中添加此功能,它将验证用户是否转到您在控制器中定义的路由 如果您使用的是Laravel Auth,那么我认为这应该适合您
if (\Auth::user()->id !== null) {
return redirect('/');
}
return $next($request);
什么是自定义登录和注销?指的不是Laravels提供的默认登录和注销。该登录代码的代码是如何添加的。您在
路由
文件中使用yung中间件
<代码>路由::中间件('auth')->get('/',function(){return view('welcom')})。如果要在中间件
文件夹中插入新的类
,则应将其放入内核