6.4 退出接口
① 设置路由,application/route.php中,adminapi域名路由部分,增加代码如下
//验证码图片
Route::get('logout', 'adminapi/login/logout');
② 创建logout方法
application/adminapi/controller/Login.php中 创建logout方法
/**
* 后台退出接口
*/
public function logout()
{
//清空token 将需清空的token存入缓存,再次使用时,会读取缓存进行判断
$token = \Token::getRequestToken();
$delete_token = cache('delete_token') ?: [];
$delete_token[] = $token;
cache('delete_token', $delete_token, 86400);
$this->ok();
}
6.5 登录检测
除了登录相关接口,其他接口都需要登录后才能访问。
在application/adminapi/controller/BaseApi.php中进行检测。
① 设置无需检测方法列表
//无需进行登录检测的请求
protected $no_login = ['login/login', 'login/captcha'];
② 进行检测
try{
$path = strtolower($this->request->controller()) . '/' . $this->request->action();
if(!in_array($path, $this->no_login)){
$user_id = \tools\jwt\Token::getUserId();
//登录验证
if(empty($user_id)){
$this->fail('未登录或Token无效', 403);
}
//将获取的用户id 设置到请求信息中
$this->request->get(['user_id' => $user_id]);
$this->request->post(['user_id' => $user_id]);
}
}catch(\Exception $e){
$this->fail('服务异常,请检查token令牌', 403);
}
测试: 将 index控制器继承 BaseApi, 浏览器访问 http://adminapi.pyg.com
总结:
项目搭建和配置、数据表设计、BaseApi基础控制器类(跨域处理、响应方法)
验证码接口、登录接口、退出接口、登录检测功能