我在 ASP.NET Core Web 应用程序中使用 JWT token 对用户进行身份验证。
身份验证过程分为以下步骤:
- 客户端使用参数登录名/密码向服务器 URL 发送 ajax 请求以获取访问 token
- 服务器获取请求并发送带有访问 token 和 token 类型的响应
客户端获取服务器响应并将 token 保存在 session 存储中,以便稍后使用 token 进行请求
当客户端有 token 时,他应该将 token 类型和 token 添加到每个请求的 header 中,如以下示例(jQuery.ajax() header 部分):
headers: { '授权' : tokenType + ' ' + token }
客户端将用户从登录页面重定向到主页。在 JavaScript 中,我可以使用以下代码来实现:
代码:
window.location.replace('[URL_TO_MAIN_PAGE_HERE]');
或
window.location.href = [URL_TO_MAIN_PAGE_HERE];
但是我有一个问题,我无法为上述请求设置 header 。
如果我使用访问 token 进行身份验证,如何在登录后将用户重定向到主页?
其他信息:
应用程序不是 SPA。
最佳答案
将 token 保存在浏览器的 session /本地存储中后,它将可用于向服务器发送任何进一步的“API”请求。当您请求页面时,通过执行 server.transfer/request.redirect/location.href 等,您无法提供任何类型的自定义 header 。
那么可用的选项是什么。
假设登录后,您将用户重定向到一个页面(使用任何方法),其中列出了一些实体。列表页面执行(或应该执行)向服务器发出 ajax 请求(加载时,在 header 脚本中)以获取数据。在此步骤中,您可以读取身份验证 token 并将其包含在请求中;服务器可以验证。
任何后续请求都将以相同的方式完成,每当您请求任何资源时,请在 http 请求中包含 token 。
如果您的 API 可以返回处理后的 html,那么您可以对其执行 GET 请求并传递身份验证 token 、检索 html 并将其包含在您的页面中...
关于javascript - 如何基于 JWT token 登录后将用户重定向到另一个页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50288599/