Membershipprovider:会话结束时自动注销

问题描述:

当会话结束时(用户关闭浏览器),我的网站有一些自动注销经过身份验证的用户的问题。Membershipprovider:会话结束时自动注销

这是我在我的web.config:

<authentication mode="Forms"> 
    <forms name="AuthCookie" protection="All" loginUrl="~/default.aspx" path="/" cookieless="UseCookies" timeout="2592000"/> 
</authentication> 

<authorization> 
    <allow users="?" /> 
</authorization> 

<membership defaultProvider="ASPPGSqlMembershipProvider" userIsOnlineTimeWindow="20"> 
    <providers> 
     <clear /> 
     <add name="AspNetSqlMemberShipProvider" applicationName="umbraco4" type="System.Web.Security.SqlMembershipProvider" connectionStringName="UmbracoDb" requiresUniqueEmail="true" enablePasswordReset="true" enablePasswordRetrieval="false"/> 
     <add name="UsersMembershipProvider" applicationName="umbraco4" type="umbraco.providers.UsersMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" /> 
     <add name="ASPPGSqlMembershipProvider" applicationName="umbraco4" 
      passwordStrengthRegularExpression="" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" 
      enablePasswordRetrieval="false" 
      enablePasswordReset="true" 
      requiresQuestionAndAnswer="false" 
      requiresUniqueEmail="true" 
      forumUpfileFolderPath="D:\www\files" 
      type="ASPPG.MembershipProviders.ASPPGSqlMembershipProvider, ASPPGSiteIntegrationPackage"/> 
    </providers> 
</membership> 

这是我的用户登录:

if (Membership.ValidateUser(txtUserName.Text, txtPasssword.Text)) { 
    HttpCookie cookie = FormsAuthentication.GetAuthCookie(txtUserName.Text, false); 
    cookie.Expires = DateTime.Now.AddDays(1); 
    cookie.Domain = ConfigurationManager.AppSettings["Level2DomainName"]; 
    HttpContext.Current.Response.Cookies.Add(cookie); 
    Response.Redirect(Request.Url.ToString()); 
} 

当我关闭浏览器,用户仍然登录。我如何通过一个选项让网站忘记用户,这样用户自己可以决定网站是否应该记住?

感谢提前:)

中号

您是否尝试过不设置cookie.Expires,或者至少将其设置为DateTime.MinValue供用户不希望被“记忆”?

MSDN

设置为MINVALUE使这是一个会话cookie,这是它的默认值的Expires属性。

+0

您从System.Net命名空间引用,但它似乎问题出现在System.Web命名空间中。我不知道它们是如何相关的,但是我没有在System.Web命名空间中找到有关cookie.Expires的类似评论。 – abelenky 2010-09-09 15:35:09

+0

@abelenky我无法从System.Web中找到很好的引用,所以我做了一个快速搜索并在System.Web中找到它。我不确定为什么这个评论不包含在这两个地方。 – Kelsey 2010-09-09 15:46:51

+0

@able - cookie是一个cookie,可以是Cookie或HttpCookie。只有包装器发生了变化,而不是与ASP.net表单身份验证相关的底层实现和行为。 – 2010-09-23 04:17:40