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;
}