我使用JWT令牌来验证ASP.NET Core Web App中的用户 .
身份验证过程包括以下步骤:
-
客户端使用params login / password向服务器url发送ajax请求以获取访问令牌
-
服务器获取请求并发送具有访问令牌和令牌类型的响应
-
客户端获取服务器响应并将令牌保存在会话存储中,以便稍后使用令牌进行请求
当客户端有一个令牌时,他应该将令牌类型和令牌添加到每个请求的头部,如下面的示例(jQuery.ajax()headers部分):
Headers :{'授权':tokenType''标记}
- 客户端将用户从登录页面重定向到主页面 . 在JavaScript中,我可以使用以下代码:
码:
window.location.replace('[URL_TO_MAIN_PAGE_HERE]');
要么
window.location.href = [URL_TO_MAIN_PAGE_HERE];
但是我有一个问题,我 can't 为上面的请求设置了一个 Headers .
如果我使用访问令牌进行身份验证,如何在登录后将用户重定向到主页?
Additional info:
应用不是SPA .
1 回答
将令牌保存在浏览器的会话/本地存储中后,它将可用于服务器的任何其他“API”请求 . 当您通过执行server.transfer / request.redirect / location.href等请求页面时,您无法提供任何类型的自定义标头 .
那么可用的选项是什么 .
让我们说登录后,你将用户重定向到一个页面(使用任何方法),其中列出了一些实体 . 列表页面向服务器(在加载时,在头文件脚本中)执行(或应该)ajax请求以获取数据 . 在此步骤中,您可以读取身份验证令牌并包含在请求中;服务器可以验证 .
任何后续请求都将以相同的方式完成,每当您请求任何资源时,请在http请求中包含令牌 .
如果您的API可以返回已处理的html,那么您可以对其执行GET请求并传递身份验证令牌,检索html并将其包含在您的页面中...