我遇到了使用Angular2和Redux的应用程序的问题。我决定使用Redux Observable(自Angular2使用RxJS以来事物的自然顺序),但RxJS对我来说非常棘手。
我正在通过史诗处理所有异步/副作用。对我来说很明显,但现在我需要将JWT添加到我的应用程序中,我不知道应该在哪里放置代码来保存和读取令牌?
我这样做:
我认为在2和3之间应该有一个额外的点,但我不确定。我应该添加用于将JWT令牌保存到史诗的逻辑吗?
我将非常感谢所有关于此的建议,并将JWT与Redux集成在一起。
答案 0 :(得分:1)
您应该设置会话并将令牌保存到史诗中的localStorage - 这是您应该处理所有副作用的地方。
login = ( action$ ) => {
return action$.ofType(SessionActions.LOGIN_USER)
.flatMap(( {user} ) => {
return this.sessionService.login(user)
.do(payload => {
this.sessionService.setSession(payload.json());
}).map(result => ({
type: SessionActions.LOGIN_SUCCESS,
payload: result.json()
})).catch(error => Observable.of({
type: SessionActions.LOGIN_ERROR,
payload: error.json()
}));
});
}
SessionService:
setSession( user ) {
this.storage.setItem('auth-user', user);
}
isLoggedIn() : boolean {
return !!this.storage.getItem('auth-user');
}