ASP.NET WebAPI如何使用IIS存储我的用户身份验证状态?

我有一个asp.net Web Api 2 / Identity 2应用程序,需要用户进行身份验证.验证工作,但我注意到,当我重新启动本地开发机器并尝试访问需要验证的方法时,我得到了失败.

由于我的应用程序与asp.net示例相同,因此我认为它使用cookie在客户端上存储用户数据.服务器或IIS如何以及如何存储有关哪些用户已通过身份验证的信息?它是仅仅执行一次还是每次HTTP?我在服务器上检查身份验证和授权的方式使用令牌或cookie身份验证之间有区别吗?

解决方法

我认为您误解了身份验证如何与ASP.Net一起使用.举个例子,让我向你展示一些使用Identity的网站的cookie细节(注意令牌实际上在cookie中,这两个不是互斥的概念):

Name    __RequestVerificationToken
Value   afeILhaIvRr56jXXXXXXXXXXX
Host    site.azurewebsites.net
Path    /
Expires At end of session

请注意,认情况下,Cookie会在会话结束时到期.这意味着当您重新启动开发计算机时,您的cookie已过期且您的令牌不再有效.

In particular I have read that with token authentication then there is no need for continual re-authentication every time a request is made to the server

您需要了解HTTP是无状态协议.每个请求都是在真空中发生的,因此您需要将一些数据传递回服务器,以便它可以告诉使用请求A进行身份验证的人确实是请求B的发起者.几乎总是,该数据来自曲奇饼.因此,每个请求确实都会重新进行身份验证,并且通常使用cookie中的令牌.

存储在客户端上的关于会话的唯一数据是cookie(除非你做了非典型的事情).其余的都在服务器上.它的存储方式可能有所不同:

Inproc:最容易设置,会话存储在进程中.因此,当您的服务器或应用程序池重新启动时,该数据将消失

状态服务器模式:会话存储在进程中,但在ASP.Net工作进程之外,因此可以重新启动应用程序而不会丢失会话数据

sql Server:不出所料,它将数据存储在数据库中.非常有弹性,但设置工作量更大.如果您在网络农场,也是您的最佳选择.

ref:http://msdn.microsoft.com/en-us/library/vstudio/ms178586(v=vs.100).aspx

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....