密码散列算法函数
$password_plaintext = "12345";
$password_hash = password_hash( $password_plaintext, PASSWORD_DEFAULT);
if (password_verify('12345', $password_hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
JWT生成Token和Token验签
//签发token
public static function signJWTToken($data){
$token = array(
"iss" => "易学派", //签发者
"time" => self::getDateTimeByTime(), //签发时间
'data' => $data //可以用户ID,可以自定义
);
$jwt = new JWT();
$jwt = $jwt::encode($token, self::$key,'HS256');
return $jwt;
}
//验证token
public static function checkJWTToken($token){
try {
// JWT::$leeway = 60;//当前时间减去60,把时间留点余地
$decoded = JWT::decode($token, self::$key, array('HS256')); //HS256方式,这里要和签发的时候对应
$arr = (array)$decoded;
$arr = (array)$arr['data'];
return $arr;
} catch(\Firebase\JWT\SignatureInvalidException $e) { //签名不正确
return self::returnMsg(false,array('code'=>'10001','message'=>'签名不正确'));
}catch(\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用
return self::returnMsg(false,array('code'=>'10001','message'=>'签名在某个时间点之后才能用'));
}catch(\Firebase\JWT\ExpiredException $e) { // token过期
return self::returnMsg(false,array('code'=>'10001','message'=>'登陆失败,请重新登陆'));
}catch(Exception $e) { //其他错误
return self::returnMsg(false,array('code'=>'10001','message'=>'其他错误'));
}
}