我希望用户在其auth-token的到期时间到来时自动注销。如何在不访问商店(以及调度功能)的情况下调度注销操作? 我想用一个超时组件包装每个视图组件,然后发送注销似乎超过顶部。
正如我从github上的issue 229和issue 574理解的那样,当不在组件中时,没有干净的方法从AOR的redux存储访问调度函数。
如何实现自动注销(具有商店许可,如注销操作那样)?
答案 0 :(得分:3)
您可以使用自定义传奇,请参阅doc。
// in logoutIfTokenExpiredSaga.js
import { call, put, takeEvery } from 'redux-saga/effects';
import { userLogout } from 'admin-on-rest';
function getUserToken() {
return localStorage.getItem('token');
}
function hasTokenExpired(token) {
// Write your custom logic for token expiration check
}
function* autoLogout() {
const token = yield call(getUserToken);
const hasExpired = yield call(hasTokenExpired);
if (hasExpired) {
yield put(userLogout());
}
}
export default function* logoutIfTokenExpiredSaga() {
yield takeEvery('AOR/USER_LOGIN_SUCCESS', autoLogout);
}