Ale*_*RKO
6
architecture
angular
我设计的授权系统很差。我需要建议来纠正一些错误。
我创建 :
- 一个 HttpInterceptor 到:
- 在每个请求的标头中设置 JWT 令牌(它保存在 localStorage 中)
- 从响应中检索和更新 JWT 令牌(每个授权请求在标头响应中发回更新的令牌)
- 出现 401 错误时,将用户重定向到登录页面
- AuthGuard 用于:
- 把它放在某个路线上
- 如果没有重定向到登录页面,检查用户是否被授权
- 一个用户服务:
- 在 BehaviorSubject 中保留当前用户
- 如果 JWT 令牌存储在 localStorage 中,请尝试刷新当前用户
我的用例是:
- 用户尝试直接加载具有受限授权的页面
- 保护负载 UserService 以验证用户是否已登录
- UserService 进行 http 调用
- HttpInterceptor 获取请求,因为localStorage 中没有令牌,它不接受令牌
- 后面因为没有令牌发送 401
- 拦截器拦截响应捕获 401 并返回空值
- 当响应变成空值时,它永远不会返回不允许 Guard 解析路由的 UserService(然后在 401 拦截器中进行的导航将永远不会被调用)
对于完整的代码,这里是完整的 GitHub 存储库,更准确地说:
如何让拦截器返回空响应而不是空响应?我想这足以解决问题。或者我应该做一个完全不同的模式?