微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐