微信登录:为用户签发 JWT

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

用登录凭证从微信服务端得到了用户的 openid 还有 session_key ,用户的微信帐号与网站帐号绑定在一起以后,用 openid 在我们的网站上找到了对应的用户,我们就可以给用户签发一个 token ,让他登录 ...

签发 JWT 需要用到一个外部库,先打开命令行工具 .. 进入到后端项目所在的目录 .. 找到自定义的插件 ..

在插件目录的下面,创建一个 composer.json .. 执行一下 composer init ..

composer init

一路回车 ..

Would you like to define your dependencies ,yes .. 搜索一下 php-jwt .. 这里我们要使用 firebase 的 php-jwt 这个包 .. 输入对应的序号 ..

指定一下要使用的版本 .. 不输入特定的版本会使用最新版本的这个包 ..

再按一下回车 .. 要定义开发依赖吗?输入 no .. 确定生成 ..

这样会在项目的下面创建一个 composer.json 文件 .. 再执行一下 composer update ,去安装一下项目的依赖 .. 在生成 composer.json 的时候,我们添加了一个 fireboase 的 php-jwt ,执行 composer update 会去安装这个包 ..

使用

回到项目 .. 在这个微信 REST 接口里要用一下刚才安装的 JWT 提供的功能 .. 先在文件的一开始 use 一个 \Firebase\JWT\JWT;

生成 token 的功能可以去复制一下 .. 我们之前在项目里安装了一个叫 jwt authentication fro wp rest 这个插件 .. 找到这个插件 .. 在 public 目录的下面,找到 class-jwt-auth-public.php ..

搜索一下 generate_token ... 找到这个方法以后 .. 可以复制一下 ...

然后把这个方法粘贴到微信 REST 这个接口的类里面 ..

这个方法还得稍微再改一下 .. 让这个方法接受一个 $user 参数 .. 使用它的时候可以把要签发 token 的用户交给这个方法 ..

在方法里面,去掉 $username .. 还有 $password .. 因为我们在这个方法里不需要验证用户的用户名与密码 .. 可以直接让它为指定的用户签发 token ..

下面验证用户身份的代码也可以去掉 ..

Token

在 login 方法里面,添加一个 $token .. 用一下 $this 的 generate_token .. 把上面的 $user 交给这个方法 ..

然后可以再判断一下 .. 如果 $token 是 WordPress 的错误 .. 这里可以使用 is_wp_error 函数来判断指定的东西到底是不是 WordPress 错误 ..

如果是,可以 return $token ..

下面再添加一个 $response .. 用一下 rest_ensure_response ,把 $token 交给这个方法 ..

再用一下 $response 里的 set_status ,设置一下响应的状态码 .. 这里我们生成了 token,所以状态码可以设置成 201 ,表示 created ..

最后再 return 这个 $response ..

微信登录:为用户签发 JWT《 微信小程序:微信登录 #7 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点