thinkphp临时token设计例子
时间: 2023-10-24 22:05:41 浏览: 187
以下是一个简单的ThinkPHP临时token设计例子:
1. 在用户登录成功后,生成一个临时token,并存储到redis中,同时将此token返回给前端。
2. 前端在每次请求后,将token作为header传递给后端。
3. 后端在每次请求前,验证header中的token是否存在于redis中,如果存在则说明token有效,可以正常处理请求;如果不存在,则返回错误响应。
4. 每次请求完成后,后端需要从redis中删除此token,以保证每个token只能被使用一次。
下面是一些示例代码:
1. 生成临时token并存储到redis中:
```
$token = md5(uniqid()); // 生成随机token
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->setex($token, 3600, 1); // 存储token并设置过期时间为1小时
return $token;
```
2. 验证header中的token是否存在于redis中:
```
$token = request()->header('Authorization'); // 获取header中的token
if (!$token) {
return json(['code' => 401, 'msg' => 'Unauthorized']);
}
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
if (!$redis->exists($token)) { // 判断token是否存在于redis中
return json(['code' => 401, 'msg' => 'Unauthorized']);
}
```
3. 删除redis中的token:
```
$token = request()->header('Authorization');
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->del($token);
```
注意:以上代码仅供参考,实际使用中需要根据具体需求进行调整和优化。
阅读全文