我向我的 api 添加了基于 jwt 的身份验证,将 token 添加到 header (授权:Bearer {tokenhere})。
我看了一下如何在客户端存储,最推荐的方法是使用HttpOnly cookie,它是在服务器端设置的,所以客户端代码无法访问它。浏览器将获取它并将其附加到 future 的请求中。
为此,服务器必须在响应中写入此 cookie,并且能够验证它而不是 header 中的 token (授权:Bearer {tokenhere})。
我该如何设置?我搜索了 how 和 low,并没有找到关于此的教程,它是 cookie 或 jwt,从来没有将 jwt 存储为 httponly cookie。
最佳答案
我找到了 2 个答案:
- 捕获请求并将 token 从 cookie 移动到作为身份验证持有者的 header ,因此当它开始处理 jwt 身份验证时,它会像这样(How to properly refresh a token using JWT + HttpOnly Cookie?)
- 覆盖 jwt 处理程序事件并覆盖从 cookie 中读取它的 token
( In ASP.NET Core read JWT token from Cookie instead of Headers )
将它写入 cookie 没什么大不了的,在登录方法中,我只是这样做:
HttpContext.Response.Cookies.Append("access_token", tokens.AccessToken, new CookieOptions { HttpOnly = true });
关于asp.net-core - 存储/验证存储在 .net core api 中的 HttpOnly cookie 中的 JWT token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61427818/