token的验证

TP框架下的token验证


前言

现在很多项目是前后端分离的,在前端调用后端的接口时就需要身份验证。这次讨论的是TP框架下使用token验证的方式。


1.token的创建和更新

我们在登陆和注册的时候通过之后,后端会根据时间和一些用户信息加密生成一个$token字符串。

生成之后,我们将它更新到数据库中的user表中。

然后,创建缓存,以$token为名,以用户的字段信息为值,设置保持登陆的时长。

最后,我们将$token字符串传给前端。

$token = md5(uniqid() . $id . time());
$table
->where('id', $id)
->update(['token' => $token]);
$user['token'] = $token;
Cache::set($token, $user, $time);

2.调用接口时验证token

我们在登陆注册时已经在缓存中设置了token,接下来我们会在调用接口时匹配token。
token检查,一般写在Base.php的初始化方法里,作为其他控制器的父类,每次调用子类控制器的方法时都会进行token检查。

1.我们接受前端传来的token(post or cookie)
2.判断当前访问的控制器下的方法是否需要token验证
3.用传来的token寻找同名的缓存
4.寻找到,则获取其中的$user值,并且再次设置缓存,将保持登陆的时间延长。

public function _initialize() 
{
    $this->checkToken();
}
$user = Cache::get($token);
Cache::set($token, $user, $time);

你可能感兴趣的:(PHP,token验证)