zoukankan      html  css  js  c++  java
  • api身份校验之token

    前后端分离或者为了支持多个web应用,那么原来的cookies或者session在使用上就会有很大的问题
    所以我们用到了token

    使用方式

    1.前端传登陆信息【账号密码验证码之类的】给后端

    2.后端验证登陆信息,生成唯一身份标识token绑定到用户,并返回给前端

    3.前端将token存入缓存,在每次请求时,在header或url中将token传给后端

    4.将前端传来的token与后端的token作比对,并验证过期时间,返回结果给后端

    数据库设计:

     

    php代码:

        // 测试是否登陆
        public function cehckLogin(){
            if(empty( $this->headers['token'])){
                AException('token校验失败', 401);
            }
            $user = model('User')->where(['token' => $this->headers['token']])->find();
    
            if(!$user){
                AException('token校验失败', 401);
            }
            if($user->token_timeout < time()){
                AException('token过期', 401);
            }
            // token续期
            $code_out = time() + 60*60*24* config('IAuth.token_time');
            model('User')->where(['token' => $this->headers['token']])->update(['token_timeout' => $code_out]);
            return $user->id;
        }
    
    
        // 设置唯一的token
        public static function setAppLoginToken($userid = ''){
            $str = md5(uniqid(md5(microtime((true)),true)));
            $str = sha1($str.$userid);
            return $str;
        }
        // 更新token
        public function updateToken($id, &$token, &$token_timeout){
            $token = 0;
            $token_timeout = 0;
    
            $code = IAuth::setAppLoginToken($id);
            $code_out = time() + 60*60*24* config('IAuth.token_time');
            $res = $this->where(['id' => $id])->update(
                ['token' => $code, 'token_timeout' => $code_out]
            );
            if($res){
                $token = $code;
                $token_timeout = $code_out;
            }
        }
  • 相关阅读:
    uni-app开发经验分享九: 组件传值
    uni-app开发经验分享八: 实现微信APP支付的全过程详解
    CSS3+JS完美实现放大镜模式
    原生JS拖拽
    LeetCode 797. 所有可能的路径
    面试题 02.01. 移除重复节点
    LeetCode 139. 单词拆分
    LeetCode 1436. 旅行终点站
    LeetCode 16. 最接近的三数之和
    Hadoop 3.13在Ubuntu20.04上的单机伪分布式配置
  • 原文地址:https://www.cnblogs.com/cl94/p/12507961.html
Copyright © 2011-2022 走看看