今天遇到个坑,记录一下。
在记录之前,还是要补充装环境的坑。
前段时间记录了一下ThinkPhp5不知道多少,开发环境是macos11,因为macos自带apache,php开发环境,直接把apache的配置文件的http.conf里的php开关打开即可。但是换了设备,开发环境是macos12,系统自带的apache把php去掉了,所以配置php环境,除了安装php,还在apache的http.conf文件添加php运行路径,还要倒入相关模块,还要使用证书对http.con文件进行签名(我到这一步就放弃了,因为我没找到那个证书签名)。那只能换一种方式了,就是使用brew安装php,然后还要安装httpd,还要在其配置文件添加运行环境和导入模块(具体可以参考这个)。
还要配置环境
export PATH="/usr/local/opt/php@7.4/bin:$PATH"
export PATH="/opt/homebrew/bin:$PATH"
还要安装composer工具包安装工具。
brew install composer
安装好之后,可以创建一个php项目。
composer create-project topthink/think=版本号 项目名称
好的,那么再记录一下今天这个坑。
因为换电脑,我把代码上传到了gitee,然后把代码拉下来,然后就跑不起来了,奇奇怪怪。
主要还是那个Firebase\JWT\JWT 这个包,JWT的encode 和 decode 和之前的有区别。
先对比一下前后的代码
先前的代码
private static function generateToken($data){
$key = 'key'; //秘钥:自定义
$payload = array(
'iss' => 'my', //签发人(官方字段:非必需)
'aud' => 'public', //受众(官方字段:非必需)
'iat' => time(), //签发时间
'nbf' => time(), //生效时间,立即生效
'exp' => time() + 60*60*24*7, //过期时间,一周
'data' => $data, //自定义字段
);
//加密生成token
return JWT::encode($payload, $key);
}
public static function checkToken($request){
$authorization = $request->header("authorization");
// 获取token
{
// 异常捕获无效
try {
$token = substr($authorization,8,-1);
}catch (\Exception $ex){
$token = $authorization;
}
}
try {
// 1.如果当前时间大于 exp,或者小于nbf,token无效,进行拦截
$key = 'key';
JWT::$leeway = 60;//当前时间减去60,把时间留点余地
$decode = JWT::decode($token, $key, array('HS256'));
// 查数据库,用户不存在
if(Users::where('uid', $decode->data)->find()){
// 比较当前时间大于 exp,或者小于nbf,token无效,进行拦截
if($decode->nbf > time()){
return "权限伪造!";
}elseif ($decode->exp < time()){
return "权限过期,请重新登录!";
}
}else{
return "账户不存在!";
}
}catch (\Exception $ex){
// token

本文记录了从MacOS 11到12环境变化中遇到的JWT验证问题,涉及加密库调整和参数缺失引发的错误,以及如何适应Firebase JWT库的新要求。
最低0.47元/天 解锁文章
6382

被折叠的 条评论
为什么被折叠?



