@hiforce/auth-sdk
v1.2.0
Published
基于OIDC协议的与用户中心对接的前端sdk。
Downloads
1
Readme
auth-sdk
基于OIDC协议的与用户中心对接的前端sdk。
功能
- [x] 强制、非强制认证
- [x] 自动刷新token
- [x] 认证失败自动跳登录
- [x] 退登
- [x] 主动到登录、注册(系统可以免登访问的场景)
接入
安装依赖
yarn add @hiforce/auth-sdk
npm i @hiforce/auth-sdk
项目配置
创建一个应用全局认证client
// 必填参数
export const authClient = new AuthenticationClient({
client_id: 'AlarmCenter',
client_secret: '123456',
auth_center_host: 'http://auth_center_host',
});
属性说明
| 属性key | 说明 | 必填 |
|--------------------|-----------------------------------------------------------------------------------|-------|
| client_id
| idaas里的id,建应用的时候会生成。 | true |
| client_secret
| idaas里的secret,建应用的时候会生成。 | true |
| auth_center_host
| 使用哪个环境的idaas. 注意是公网地址, e.g. http://idaas-onlinetest.quadtalent.com | true |
| redirect_uri
| 认证时跳转的地址,如果不填,则认证成功后回到当前页。如果填了,认证成功后始终回到改地址,一般用于每次登录都回到首页(window.location.origin) | false |
| appId
| 当前应用的id,用于在idaas登录页展示定制化的登录页。(前提是该应用在idaas应该定制了登录页) | false |
认证
在需要认证的地方调用 doAuthorization
方法。一般情况下认证失败,sdk会直接将页面重定向到idaas登录页,如果你有不登录也能访问系统的需求,那么可以给这个方法传true,代表跳过认证失败的结果。
// 这是一个异步的过程,
const authResult:boolean = await client.doAuthorization(skipWhenInvalid);
最佳实践
认证需要在应用入口处,认证未结束,不要渲染UI
const App = () => {
const [authing, setAuthing] = useState<boolean>(true);
useEffect(() => {
client.doAuthorization().then((authResult:boolean)=>{
// 如果你的应用是必须登录才能访问的,那么只有认证成功才渲染UI,sdk会自动调到登录页
if(authResult){
setAuthing(false)
}
})
}, [])
if(authing){
return null;
}
return 'hello page';
}
获取用户信息
认证成功后,可直接通过 getCurrentUser
获取用户信息,推荐将用户信息放到状态管理里
import { getCurrentUser} from '@hiforce/auth-sdk';
// 认证
await authClient.doAuthorization();
// 获取用户信息
const user = getCurrentUser();
// 放到redux里
dispatch(setUserInfo(user));
用户信息变化事件
authClient.onAuthInfoChange = (userInfo) => {
//
};
authClient.onAuthFail = ()=>{
}