如何在ASP.NET 2010中删除会话cookie?

时间:2011-02-03 19:27:28

标签: asp.net-membership

我有一个使用默认成员资格控件的ASP.NET 2010网络应用程序。当我登录时,Master上的Login控件显示一个Log out控件。当我点击它时,它会将我重定向到默认页面,但我注意到如果我导航回到经过身份验证的页面,它会让我进入。所以我在单击注销链接时添加了以下代码以确保cookie被杀死,

FormsAuthentication.SignOut()
Session.Abandon()

但我仍然可以导航到经过身份验证的页面。如果我实际关闭浏览器并重新打开它,它只会阻止我。

这是我的web.config ....

<authentication mode="Forms">
            <forms 
        name=".ASPXAUTH"
        loginUrl="~/Account/Login.aspx"
        protection="All"
        timeout="2880"
        slidingExpiration="true"
        defaultUrl="~/Authenticated/User/UserHome.aspx"
        />
        </authentication>

    <membership>
            <providers>
                <clear/>
                <add name="AspNetSqlMembershipProvider"
              passwordFormat="Hashed"
             type="System.Web.Security.SqlMembershipProvider" 
             connectionStringName="ApplicationServices" 
             enablePasswordRetrieval="false" 
             enablePasswordReset="true" 
             requiresQuestionAndAnswer="false" 
             requiresUniqueEmail="false" 
             maxInvalidPasswordAttempts="5" 
             minRequiredPasswordLength="6" 
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10" 
             applicationName="/"/>
            </providers>
        </membership>

        <profile>
            <providers>
                <clear/>
                <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
            </providers>
        </profile>

        <roleManager enabled="true">
   <providers>
    <clear />
    <add connectionStringName="ApplicationServices" applicationName="/"
     name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
    <add applicationName="/" name="AspNetWindowsTokenRoleProvider"
     type="System.Web.Security.WindowsTokenRoleProvider" />
   </providers>
  </roleManager>

1 个答案:

答案 0 :(得分:4)

试试这个:

Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddYears(-1)
FormsAuthentication.SignOut()
Session.Abandon()

// Now, forward to a safe unauthenticated page if SignOut() doesn't already do this.
Response.Redirect("/default.aspx")

这会尝试将ASP.NET_SessionID cookie设置为立即过期。浏览器应将其从集合中删除。我没有在VS2010中运行它,所以请用一粒盐打字。

如果这对您有用,请告诉我。