我有一个 ASP.NET MVC 单页应用程序。页面上有一个带有提交的登录区域。单击提交时,信息将发送到 WebAPI 控制器,并在服务器上进行身份验证(ASP.NET Identity 2 和 WebAPI 2)。然后,服务器将状态 HTTP 响应发送回浏览器,以确认用户是否已通过身份验证(登录)。
现在网页更改并显示一个新的可见区域,该区域能够将 PUT 的 POST 等发送到服务器上的 WebAPI。但是,这些如何向服务器传达用户现在已通过身份验证?
我有一个 ASP.NET MVC 单页应用程序。页面上有一个带有提交的登录区域。单击提交时,信息将发送到 WebAPI 控制器,并在服务器上进行身份验证(ASP.NET Identity 2 和 WebAPI 2)。然后,服务器将状态 HTTP 响应发送回浏览器,以确认用户是否已通过身份验证(登录)。
现在网页更改并显示一个新的可见区域,该区域能够将 PUT 的 POST 等发送到服务器上的 WebAPI。但是,这些如何向服务器传达用户现在已通过身份验证?
它(大致)与所有 Web 浏览器身份验证机制完全相同。身份验证后,服务器会创建一个 cookie,该 cookie 存储在您的浏览器中,当您发出请求时该 cookie 会传输到服务器,其中有一个令牌,上面写着“嘿,你认识我”,服务器看着它并说“是的,我做”。
Web 服务器将加密的身份验证 cookie 发送回网页,并且来自该页面的所有进一步请求将该 cookie 发送回服务器。
所以它看起来像这样:
// initial page request
client -> server: give me the page
server -> client: no cookie, you are anonymous, here is your page
// ajax authentication request
client -> server: here are my credentials
server -> client: ok, you are in, here is the authentication cookie
// any other request
client -> server: i want to do something, and here is the cookie
server: [decrypts cookie] i know this guy