我很难设计我的授权系统 . 我需要建议纠正一些错误 .
我 Build :
-
一个HttpInterceptor:
-
在每个请求的头文件中设置JWT标记(它保存在localStorage中)
-
从响应中检索并更新JWT令牌(每个授权请求在头响应中发回更新的令牌)
-
关于401错误,将用户重定向到登录页面
-
AuthGuard:
-
把它放在某条路上
-
检查用户是否被授权,如果没有重定向到登录页面
-
一个UserService:
-
将BehaviorSubject保留在当前用户中
如果JWT令牌存储在localStorage中, -
尝试刷新当前用户
我的用例是:
-
用户尝试直接加载具有受限授权的页面
-
后卫加载UserService以验证用户是否已登录
-
UserService进行http调用
-
HttpInterceptor获取请求,因为localStrorage中没有令牌,它不接受令牌
-
后面因为没有令牌发送401
-
拦截器拦截响应捕获401并返回null
-
因为响应变为null,它永远不会返回赢得't allow the Guard to resolve the route (then the navigate made in 401 interceptor won'来永远调用的UserService)
对于完整的代码,here is the complete GitHub repo更精确:
如何使拦截器返回空响应而不是null?我想这足以解决问题 . 或者我应该做一个完全不同的模式?