app登录access_user_token安全性
public function isLogin1() { //获取header头的access_user_token $access_user_token = $this->headers['access-user-token']; if( empty($access_user_token) ) { return false; } //判断access_user_token是否唯一 if( Cache::get($access_user_token) ) { return false; } //解密 $result = Aes::decrypt($access_user_token); if( empty($result) ) { return false; } //判断access_user_token 是否是原本token+"&&"+13位时间戳 if( !preg_match('/&&/', $result) ) { return false; } list($token, $time) = explode('&&', $result); if( empty($token) || empty($time) ) { return false; } //判断是否在有效期 10秒内有效 $time = ceil($time / 1000); if( time() - $time > 10 ) { return false; } //根据token查询数据 $user = User::get(['token' => $token]); //判断token是否有效,用户状态是否正确 if( empty($user) || $user['status'] != 1 || time() > $user['time_out'] ) { return false; } //缓存access_user_token 保证仅一次有效 Cache::set($access_user_token, 1, 601); $this->user = $user->toArray(); return true; }