redis----token验证

<?php
/**
 * token生成和验证类
 * 2019.8.3
 */
namespace app\common\model;

use redis\RedisPackage;
 
class TokenCheck
{
	public function __construct()
	{
		$this->redis_package = new RedisPackage();
	}
	/*	 
	 *用户登陆的时候,生成token,如果以后访问的接口需要登录,前端都必须带token过来
	 * return string(36) "123_852bf8521ec933e0a52b1f12cac6d878"
	 */	
	public function createToken($userid){
		$token = $userid.'_'.MD5( $userid.uniqid().rand( 00000000,99999999 ) );		
		$this->redis_package->set("admin_".$userid, serialize( array( 'time'=>time(),'token'=>$token,'user_id'=>$userid ) ) ); 
		return $token; 		
	}
	//token登陆验证
	public function checkToken( $token )
	{
		$maxtime=86400 * 3;  //3天过期时间,单位是秒
		$user_id=strstr( $token,"_",true );  //取到用户id	
		$key_admin = $this->redis_package->get("admin_".$user_id);	
		// dump($key_admin);die;
		if($key_admin){
			$fcode = unserialize($key_admin);	
		    if($fcode['token'] != $token){
			    returnJson(-1006,  "token异常,请重新登陆")->send();die;
		    }else if($fcode['time'] + $maxtime < time()){
			    returnJson(-1005,  "token过期,请重新登陆")->send();die;
		    }else{
			    //重新写入当前时间,确保3天以内登陆的用户一直不需要重新登陆
			    $this->redis_package->set("admin_".$user_id, serialize( array( 'time'=>time(),'token'=>$token,'user_id'=>$user_id ) ) );
	    	}
		}else{
			 returnJson(-1007,  "token不存在,请登陆")->send();die;
	    }
	}

}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值