【问题标题】:Membershipprovider: Automatically logging out when session endsMembershipprovider:会话结束时自动注销
【发布时间】:2011-04-10 07:57:18
【问题描述】:

我的网站在会话结束时(用户关闭浏览器)自动注销经过身份验证的用户时遇到了一些问题。

这就是我的 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());
}

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

提前致谢:)

M

【问题讨论】:

    标签: asp.net asp.net-membership forms-authentication remember-me


    【解决方案1】:

    您是否尝试过不为不想被“记住”的用户设置 cookie.Expires 或至少将其设置为 DateTime.MinValue

    来自MSDN

    将 Expires 属性设置为 MinValue 使其成为会话 Cookie,这是其默认值。

    【讨论】:

    • 您从 System.Net 命名空间引用,但问题似乎在 System.Web 命名空间中。我不知道它们之间的关系,但我没有在 System.Web 命名空间中找到关于 cookie.Expires 的类似评论。
    • @abelenky 我在 System.Web 中找不到好的引用,所以我快速搜索并在 System.Web 中找到了它。我不知道为什么这两个地方都没有这句话。
    • @able - cookie 就是 cookie,无论是 Cookie 还是 HttpCookie。只有包装器发生了变化,而不是与 ASP.net 表单身份验证相关的底层实现和行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2015-03-30
    • 2017-11-15
    • 2020-11-20
    • 2018-06-12
    • 2012-06-11
    • 2022-12-22
    相关资源
    最近更新 更多