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;
            }
        }
  • 相关阅读:
    网页效果图设计之色彩索引
    支持树型的GridView控件
    (转)CSS布局参考 IE的If条件注释使用备忘
    firefox与IE对javascript和CSS的区别
    转 CSS半透明滤镜在FIREFOX和IE下面的能够通用的写法
    無法為 SSL/TLS 安全通道建立信任關係,忽略憑証檢查的方式
    临时
    EventUtil
    js测试对象包含特性
    重学概率论的一点点理解(持续更新)
  • 原文地址:https://www.cnblogs.com/cl94/p/12507961.html
Copyright © 2011-2022 走看看