我很难设计我的授权系统 . 我需要建议纠正一些错误 .

我 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?我想这足以解决问题 . 或者我应该做一个完全不同的模式?