给我你的怀抱2017-05-15 17:11:329楼
history.listen(location => {
const pathname = location.pathname;
if (pathname !== '/login' && pathname !== '/logout') {
dispatch({
type: 'check',
payload: pathname
});
}else if(pathname === '/logout'){
dispatch({
type: 'logout',
payload: pathname
});
}
});
*check({ payload }, { select, call, put }) {
const { isLogin, lastCheck, interval } = yield select( ({ auth }) => auth);
const now = (new Date()).getTime();
yield put({
type: 'authRedirect',
payload,
})
if (!isLogin){
yield put(routerRedux.push('/login'));
return ;
}
//是否异步检测
if (!interval || (now - lastCheck) < interval ){
return;
}
const { data, err } = yield call(fresh);
if (data && data.status==0) {
yield put({
type: 'freshSuccess',
payload: data.data,
});
return ;
}
yield put(routerRedux.push('/login'));
}
// fresh login status
export async function fresh(params) {
return request(`/api/auth/fresh?${qs.stringify(params)}`);
}
监听 url 变化,如果不是login logout 就检查登录状态。
检查登录状态
检查js变量,没有登录就直接跳登录页
如果js变量已经登录,就判断一下是否需要异步检测 不需要检测就结束(比如上次检测是在60秒内)。
如果需要异步检测,就异步检测是否登录,如果成功 刷新一下lastcheck时间。
如果检测没有登录,就直接跳登录页