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;
各方面协调起来。