java接口 appid生成_JBolt开发平台入门(18)-API应用中心-JWT的生成与使用

本文介绍了在JBolt开发平台中如何生成和使用JWT。通过创建应用获取APPID和密钥,然后在API接口中使用拦截器进行JWT的签发和验证。详细阐述了授权登录、JWT的生成、存储及有效性校验过程,同时展示了错误情况的处理,并提到了JWT过期后的无感刷新机制。
摘要由CSDN通过智能技术生成

上一节:JBolt开发平台入门(17)-核心配置文件项目说明

JBolt平台中的API应用中心,创建一个应用之后分配了APPID和密钥

APPID用来识别请求来自哪个应用的唯一标识,密钥是用来生成TOKEN的加密密钥

大体流程:小程序举例:

1、首次进入小程序,只要查看需要授权登录才能查看的界面和数据,就需要小程序跳转到授权界面,或者点击授权按钮调用授权登录。

// 登录

wx.login({

success:res => {

// 发送 res.code 到后台换取 openId, sessionKey, unionId

if (res.code){

//调用成功后将后台拿到的JWT 保存在本地就完了

}

});

2、这个在请求后端的时候,是不校验是否在request的header中带着JWT的,因为这时候后端系统服务还没有为小程序当前用户签发JWT

3、当这个请求调用成功拿到openID之类的信息后,说明已经授权登录了,那么返回登录成功消息给小程序端的时候,response的header了就带着JWT的信息了。

这里我们在JBolt的中做了一个例子:ApiTestController.java

首先,需要在API应用中心创建一个应用

9c8a04afa305

APi应用中心

这里创建一个应用之后,分配了APPID和密钥;

9c8a04afa305

APPID和密钥

9c8a04afa305

APPID和密钥

我们使用postMan去测试:

9c8a04afa305

Postman测试

使用Postman去请求一个API接口:login

需要在请求的Header中加入jboltappid和JBOLTAPI这两个key-value配置。

jboltappid是JBolt应用开发中心创建应用分配的appId

JBOLTAPI是声明这是按照JBOlt平台定义的API调用,值必须是true

9c8a04afa305

测试代码Controller

【这里在JBOlt平台里只要Controller继承JBoltApiBaseController即可轻松编写API】

在LOGIN上有一个注解@ApplyApiToken

如果是一个请求需要调用我们的接口,需要校验JWT的话,那么JWT都是服务器签发的,必然会有一个签发申请的过程。

就比如上面说的小程序里授权登录或者应用里输入账号密码登录后,校验你是正确的用户才给你签发这个JWT。

这里特别注意 这两个东西是成对出现的,你注解加了需要申请JWT,生成JWT是在拦截到这个注解后去执行的。

所以这里必须要在验证用户正确后,调用

JBoltApiKit.setApplyJwtUser(new JBoltApiUserBean(1,1, "zhangsan"));

去设置一下请求用户信息

9c8a04afa305

成对儿

拦截器会自动处理后面的事情,创建出JWT,并且设置到Response中去。

9c8a04afa305

Response中就会带着jwt返回给请求端

在response中我们就拿到了JWT信息了,header中的KEY我用的是:jboltjwt

这个是在代码里定义的常量,如果想换成别的,代码里换了就是了。

9c8a04afa305

相关KEY设置

到此,首次访问授权,签发JWT的流程就讲完了。

那么,接下来就是小程序端这边请求拿到JWT后的操作了。

一般,都是放在localstorage中了。

注意:放在localstorage中也会存在xss攻击隐患,有的会放在cookie中设置httponly=true

这样可以有效防止xss攻击

postman 测试校验JWT的接口

这样需要在调用接口的时候带着jboltappid和jboltjwt了 也就是签发的JWT信息要带着才能去请求。

这里的jboltjwt就是login授权请求签发回来header中的jboltjwt了

9c8a04afa305

测试JWT有效性

在小程序里来一遍

JBolt极速开发平台已经提供了微信小程序极速开发JS SDK 轻松对接JBolt开发平台。

9c8a04afa305

小程序里签发的JWT

需要在Header中加入jboltappid,调用接口即可在小程序请求的response中拿到签发的jboltjwt,存放在localstorage中。

再次调动接口的时候,判断是需要带着Token的就需要从本地获取到存储的JWT了。

9c8a04afa305

发送请求带着JWT

小程序里面拿到jboltjwt后调用其他接口,也是在request中加入jboltapId和jboltjwt,如果开启了checkSign校验机制,会自动生成随机字符串 时间戳和sign校验码,放在Header中去请求接口,接口会校验这些信息。

说明:这里我们测试的都是正确使用方法的情况下。

当然JBOLT里也处理了各种错误情况。

举例1,header中不带jboltappid

9c8a04afa305

结果演示

举例2,header中jboltappid写错了

9c8a04afa305

结果演示

举例3,需要校验JWT但是没传的jboltjwt

9c8a04afa305

结果演示

举例4,jwt写错了

9c8a04afa305

结果演示

具体客户端拿到校验失败的返回值后自行处理,是弹出个信息提示还是直接跳转到登录页重新授权登录,随便啦。

jwt过期无感刷新机制

JBolt平台里已经提供了JWT过期 无感刷新 自动重发机制,在收到过期消息后 会自动请求jwt后 重发请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值