前言
用户认证模块也是网页中非常重要的一个环节,
比如接口无法使用 session,因此只能传一个特殊的参数 “token”,
token 是一个加密的字符串,在服务端进行解密,如果没问题就代表认证成功。
由于自己写的加密系统不安全,所以直接使用比较成熟的加密系统——JWT。
安装
jwt 模块集成在框架里,因此要进入框架目录进行安装,而不是直接安装在博客系统里面。
执行命令:composer requiire firebase/php-jwt
。
Auth
上一个步骤已经安装了 jwt 插件包,用户只需要关注加密和解密,
对 jwt 具体是怎么实现的,则不需要了解。
因此我封装了一个 Auth 方法:
plain
1 | <?php |
用户只需要调用 Auth 暴露的加密和解密方法即可。
加载配置
在 app.php 添加新的配置参数:
plain
1 | Constant::JWT_CONFIG => [ |
其中 key
是加密字符串,alg
是加密方法,
leeway
是时间偏差值,意思是说这个 token 在这个偏差的时间内都可以算作认证成功(防止服务器时钟偏差)。
调用方法
在 test 方法添加如下代码:
plain
1 | <?php |
这里的 encode
的参数是一个数组,即用户的信息,可以是用户的 ID,
但绝对不能是密码或者其他敏感信息,因为 jwt 最终生成的 token 使用的是 base64,可以轻松解密。
上述代码打印的结果为:
plain
1 | string(17) "请求URI:/test" |
至此,JWT 加密模块就完成了。