验证用户,然后发送JWT并提供Angular应用

时间:2019-03-17 11:08:51

标签: angular express

我有一个只有某些用户(例如员工)可以使用的角度应用程序。

我想做这样的事情:

  • 用户GET /employees/login
  • 服务器以服务器呈现的登录页面作为响应(例如ejspug-不成角度)
  • 用户POST表单发送到/employees/login
  • 服务器对用户进行身份验证
  • ...这是问题所在...使用JWT进行响应,并同时提供角度应用(express.static(...)

我知道如何用JWT进行响应,并有把握地将其放入本地存储。我也知道如何使用静态提供的角度应用程序进行响应。

但是,鉴于角度尚未在浏览器中运行,我不知道如何同时完成这两个操作。

我该怎么做?我不需要代码,只需解释一下如何完成。该用例没有官方文档。

1 个答案:

答案 0 :(得分:1)

我过去这样做的方式如下:

  • 服务器端应用程序托管API,并为未经身份验证/未经授权的请求返回401/403
  • Angular应用程序(模块运行功能)调用配置文件端点以获取当前用户的详细信息(如果用户尚未登录,则将如上返回)。这就是立即强制用户身份验证,而不是等待API调用的原因。
  • Angular应用程序具有一个HTTP拦截器,该拦截器查找401/403响应并重定向到服务器端登录页面,并将请求的客户端路由作为参数,以便我们可以在成功登录时将脖子重定向到正确的位置
  • 服务器端登录页面上的代码-成功登录后-将JWT插入localStorage,然后处理重定向(通过页面JavaScript,与Angular无关)。