使用 JWT 对 Angular Universal 进行身份验证
Posted
技术标签:
【中文标题】使用 JWT 对 Angular Universal 进行身份验证【英文标题】:Authenticating Angular Universal With JWT 【发布时间】:2021-05-17 19:12:22 【问题描述】:我有一个 Angular 10 Universal 项目,它使用从 localhost 检索到的 JWT 来验证私有路由的请求。
我目前将此项目用于身份验证过程: https://www.npmjs.com/package/@auth0/angular-jwt
我认为 Angular Universal 面临的问题是,在呈现需要身份验证的页面时,我的请求无法从 localStorage 检索 JWT 令牌。请注意,这就是我认为的问题所在,因为我在这些请求上得到了未经授权的 401,并且已经阅读了一些内容。
有没有办法使用用户登录网站时返回的 JWT 令牌来验证这些请求?
后端是 .Net Core 2.1
【问题讨论】:
【参考方案1】:JWT收到后可以保存到cookies吗?在这种情况下,JWT 将与请求一起发送,因此可以在服务器端进行处理。 另外,我认为用安全标志设置这个cookie会很好,所以在xss漏洞的情况下不能从js访问它(所以它不能发送到第3方服务)
【讨论】:
是的。我试图避免使用 cookie,但我想我可以。如何使用 Universal 将其添加到正确的 Header?你知道吗? 您是说在授权后将生成的 jwt 传递到前台还是将收到的较早的 jwt 从前台发送到服务器? 我需要从 Angular Universal 渲染器向我的 API 发送一个经过身份验证的请求,因此从前端到后端的请求需要获取带有令牌的标头。前端从 API 发送的对象中获取它。 如果我理解正确,例如,您可以使用 ngx-cookie github.com/salemdar/ngx-cookie#-server-side-rendering 使用 CookieService 从前端发送 jwt,然后您可以借助 http 拦截器将其传递到后端将从 cookieservice 获取值并将其附加到 headers 您好,抱歉,我发现了我的问题。把那个 Github 链接放在你的答案中?如果你这样做,我会接受它作为正确答案,因为我相信它会以另一种方式解决我的问题。谢谢!以上是关于使用 JWT 对 Angular Universal 进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Angular 8 中对客户端的 JWT 解码令牌有效负载进行编码?
使用 Angular 和 spring 进行 Jwt 身份验证
使用 angular 和 express-jwt 实现刷新令牌