Juth2-client.js
介绍
Juth2-client.js 是一个基于javascript的Juth2客户端实现。基于HTTP Header进行鉴权信息传输,实现了JWT处理、鉴权状态保持、接口封装等特性,包括
- 使用sessionStorage进行状态保持,并支持多页签共享,但不会像cookie样出现CSRF
- 与axios保持一致的请求接口 get/post/request
- 内置signIn/signOut/refreshToken(deamon模式自动)等接口
- JWT Claims完整度处理,确保残缺信息无法通过Juth2-Server
Juth2
Juth2是一整套跨域鉴权解决方案。基于JWT + OAuth2.0标准,由Java + Javascript实现(目前)。提供可配置鉴权/授权参数、透明中间层、对应(OAuth2.0)标准API,实现安装即用的前/后台套件。
更多信息可以 点此查看
安装
- NPM
npm i @holyhigh/juth2-client.js
使用
- NPM导入
import j2c from '@holyhigh/juth2-client.js';
- 初始化Juth2-client
j2c.init({
clientId: cid,//服务端生成的客户Id
scope: 'a b',//授权范围
origin: 'http://yy.yy.yy',//自己的服务器域名
domain: 'http://xxx.xxx.xx',//验证服务器域名
secret: 'juth2',//密钥,用于请求签名
credentials: false,//是否启用credentials
daemon: false, // 守护模式,开启后会自动在token过期前请求刷新token。注意,必须拥有刷新token权限,否则服务端会报错
log:false//是否开启日志
}).then(signedIn => {//j2c内部实现了
console.log('signedIn=>', signedIn)
});
- 发起登录请求(password授权模式,使用HS256加密)
try {
const rs = await j2c.signIn(username, password);
//如果不使用juth2-client提供的get/post/request方法,比如外部axios
//请务必获取rs中的headers数据的Authorization并设置到外部axios中
} catch (e) {
console.error(e);
}
- 登陆后可以访问其他服务
juth2.get('/r/show/me/the/money').then(rs => {
console.log(rs);
});