详情页

fastadmin里面token加密方式

时间:2023年07月02日

编辑:佚名

fastadmin里面token加密方式知识分享
1.首先随机生成一个唯一的token
php复制代码/**
     * 获取全球唯一标识
     * @return string
     */
  function uuid()
    {
        return sprintf(
            '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
            mt_rand(0, 0xffff),
            mt_rand(0, 0xffff),
            mt_rand(0, 0xffff),
            mt_rand(0, 0x0fff) | 0x4000,
            mt_rand(0, 0x3fff) | 0x8000,
            mt_rand(0, 0xffff),
            mt_rand(0, 0xffff),
            mt_rand(0, 0xffff)
        );
    }
    echo  uuid();
2.下面是加密
php复制代码// 加密方式
echo " hash_hmac(加密方式, 加密字段, 缓存前缀)";
echo hash_hmac("ripemd160", "asdasd-asdasd-sadasd-asdsa", "i3d6o32wo8fvs1fvdpwens");die;
3.加密后存入数据库或者缓存,
4.加密后 获取数据库或者缓存中对应的用户id和用户信息
token类的基本功能
自动初始化Token
判断Token
读取Token
设置token
删除Token
更新token
获取token用户信息
验证token的基本功能 、除去以上功能外
模拟他人账号
多账号认证体系
检查用户权限
获取用户权限菜单
下面我们讲一下类库
jwt模式是前后端分类趋势下生成的新的验证机制,JSON Web Token
存redis的一般方法,
php复制代码 /**
     * 存储Token
     * @param   string $token   Token
     * @param   int    $user_id 会员ID
     * @param   int    $expire  过期时长,0表示无限,单位秒
     * @return bool
     */
    public function set($token, $user_id, $expire = 0)
    {
        //过期时间
        if (is_null($expire)) {
            $expire = $this->options['expire'];
        }
        if ($expire instanceof \DateTime) {
            $expire = $expire->getTimestamp() - time();
        }
        //获取加密后的Token
        $key = $this->getEncryptedToken($token);
        // Redis 字符串(string)
        if ($expire) {
            $result = $this->handler->setex($key, $expire, $user_id);
        } else {
            $result = $this->handler->set($key, $user_id);
        }
        //写入会员关联的token Redis Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。
        $this->handler->sAdd($this->getUserKey($user_id), $key);
        return $result;
    }
token类的基本方法是
初始化类库(获取token配置、根据配置参数引用不同的驱动,连接Token驱动)
生成token
设置token(绑定token和user_id,设置的缓存、文件、甚至是数据库)
获取token(获取token和用户id)
验证token是否可用(验证是否存在、验证是否过期,重置过期时间)
根据token清除token
根据user_id清除token
获取过期剩余时长
php复制代码<?php
class token  

       /**
     * 自动初始化Token
     * @access public
     * @param  array $options 配置数组
     * @return Driver
     */
    public static  function init(array $options = [])
    {
         //首先链接不同的token储存驱动(mysql、redis等)
    } 
     /**
     * 获取全球唯一标识
     * @return string
     */
    public static function uuid()
    {
    }
     /**
     * 加密token
     * @return string
     */
    public static function hash_uuid($uuid)
    {  
    }
     /**
     * 判断Token是否可用
     * @param string $token Token标识
     * @return bool
     */
    public static function check($token, $user_id)
    {
    }
      /**
     * 读取Token
     * @access public
     * @param  string $token   Token标识
     * @param  mixed  $default 默认值
     * @return mixed
     */
    public static function get($token, $default = false)
    { 
    }
    /**
     * 写入Token
     * @access public
     * @param  string   $token   Token标识
     * @param  mixed    $user_id 存储数据
     * @param  int|null $expire  有效时间 0为永久
     * @return boolean
     */
    public static function set($token, $user_id, $expire = null)
    {  
    }
    /**
     * 删除Token
     * @param string $token 标签名
     * @return bool
     */
    public static function delete($token)
    {  
    }
    /**
     * 清除Token
     * @access public
     * @param  int user_id 用户编号
     * @return boolean
     */
    public static function clear($user_id = null)
    {  
    }
}
相关文章
猜你需要