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;
            }
        }
  • 相关阅读:
    [摘]MongoDB范围查询的索引优化
    python ftp 暴破
    写mongodb日志
    [转]使用 Python 实现跨平台的安装程序
    HDOJ 1008 Elevator
    第一个数字
    反转串
    HDOJ 1108 最小公倍数
    HDOJ 1096 A+B for InputOutput Practice (VIII)
    报数游戏
  • 原文地址:https://www.cnblogs.com/cl94/p/12507961.html
Copyright © 2011-2022 走看看