Asp.net mvc 4 MVC 4 Simplemembership与会话混淆

Asp.net mvc 4 MVC 4 Simplemembership与会话混淆,asp.net-mvc-4,simplemembership,Asp.net Mvc 4,Simplemembership,我在我们的MVC4项目中使用simplemembership,这会按预期创建一个会话,但似乎在会话过期后用户信息仍然存在 例如,20分钟后,如果User.Identity.IsAuthenticated==true仍然有效,但我的会话变量都为空 有人能告诉我为什么会这样吗?这个曲奇有人管理吗?除了User.Identity.IsAuthenticated==true之外,是否还需要执行其他检查 如果某人的会话已过期,我无法让其获得访问权限 谢谢,ASP.NET中有三个不同的概念: ASP.NE

我在我们的MVC4项目中使用simplemembership,这会按预期创建一个会话,但似乎在会话过期后用户信息仍然存在

例如,20分钟后,如果User.Identity.IsAuthenticated==true仍然有效,但我的会话变量都为空

有人能告诉我为什么会这样吗?这个曲奇有人管理吗?除了User.Identity.IsAuthenticated==true之外,是否还需要执行其他检查

如果某人的会话已过期,我无法让其获得访问权限


谢谢,ASP.NET中有三个不同的概念:

  • ASP.NET会话
  • 表单身份验证
  • 成员资格提供程序(在您的情况下为simplemembership)
这3个可以单独使用,它们之间没有任何依赖关系。我将尝试分别描述它们:

  • ASP.NET会话-提供一些信息的服务器端存储,这些信息要在各种HTTP请求之间持久化。服务器上有3种开箱即用的存储:InProc、StateServer和SQLServer。客户端上有一个cookie,它只包含会话的标识符,因此在服务器上可以从相应的存储中检索正确的数据。您可以在此处阅读有关ASP.NET会话的更多信息:

  • 表单身份验证-用于跟踪经过身份验证的用户。当前经过身份验证的用户存储在cookie中。实际上,他的加密用户名存储在表单验证cookie中,并在每个请求中传递。FormsAuthenticationModule根据此cookie的值填充
    User.Identity.IsAuthenticated
    属性。您可以在此处阅读有关表单身份验证工作原理的更多信息:

  • 简单成员资格提供程序-使用SQL server存储成员资格用户的ASP.NET实现


在ASP.NETMVC中,这些概念的工作方式与经典ASP.NETWebForms中的工作方式相同。唯一的区别是,您可以使用
Authorize
属性修饰控制器操作,以确保只有经过身份验证的用户(提供有效表单身份验证cookie的用户)才能访问该操作。

谢谢Darin。这确实回答了我的问题。因此,如果会话状态由于超时而被清除,并且我想让用户再次登录,您知道有没有一个简单的方法来处理这个问题?如果SimpleMembership不依赖表单身份验证,那么WebSecurity.CurrentUserId属性如何知道当前用户?