@holyhigh/juth2-client.js
Version:
A Juth2 client for javascript
56 lines (51 loc) • 2.13 kB
Markdown
Juth2-client.js 是一个基于javascript的Juth2客户端实现。基于HTTP Header进行鉴权信息传输,实现了JWT处理、鉴权状态保持、接口封装等特性,包括
- 使用sessionStorage进行状态保持,并支持多页签共享,但不会像cookie样出现[CSRF](https://www.jianshu.com/p/2bd833de3adb)
- 与axios保持一致的请求接口 get/post/request
- 内置signIn/signOut/refreshToken(deamon模式自动)等接口
- JWT Claims完整度处理,确保残缺信息无法通过Juth2-Server
Juth2是一整套跨域鉴权解决方案。基于JWT + OAuth2.0标准,由Java + Javascript实现(目前)。提供可配置鉴权/授权参数、透明中间层、对应(OAuth2.0)标准API,实现安装即用的前/后台套件。
更多信息可以 [点此查看](https://www.jianshu.com/p/385e88e32a59)
1. NPM
```
npm i @holyhigh/juth2-client.js
```
1. NPM导入
```
import j2c from '@holyhigh/juth2-client.js';
```
2. 初始化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)
});
```
3. 发起登录请求(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);
}
```
4. 登陆后可以访问其他服务
```
juth2.get('/r/show/me/the/money').then(rs => {
console.log(rs);
});
```