6.11 全局中间件的设置
6.11.1 创建中间件
php think make:middleware CheckRememberMe
6.11.2 保持登录状态的业务编写
因为cookie是保存在本地,session早已经过期,所以在路由里面就把在需要token验证
在_header.html退出登录后去掉{:token_field()}
在路由文件app.php中也去掉token验证
Route::get('login','Auth/create')->name('login.create');
Route::post('login','Auth/save')->name('login.save');
Route::delete('login','Auth/logout')->name('logout');
前置中间件CheckRememberMe.php设置:
public function handle($request, \Closure $next)
{
//添加中间件执行代码
if (!session('?user')) {
if ($user_id = Cookie::get('user_id')) {
$session_user = User::find($user_id);
session('user', $session_user);
}
}
return $next($request);
}
在在Auth.php中登录前设置:
Cookie::set('user_id',$user->id,86400*30);
在Auth.php中加Cookie::delete('user_id');
同时,set、get、 delete等都要依赖facade门面,要引入到Auth.php和CheckRememberMe.php中:
use think\facade\Cookie;
各方面协调起来。