asp.net-membership - 如何删除 ASP.NET 2010 中的 session cookie?

标签 asp.net-membership

我有一个使用默认成员资格控件的 ASP.NET 2010 Web 应用程序。当我登录时,主服务器上的登录控件会显示注销控件。当我单击该按钮时,它确实会将我重定向到默认页面,但我注意到,如果我导航回经过身份验证的页面,它会让我进入。因此,当单击注销链接时,我添加了以下代码以确保 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>

最佳答案

试试这个:

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 中运行过这个,所以请对我的打字持保留态度。

请告诉我这是否适合您。

关于asp.net-membership - 如何删除 ASP.NET 2010 中的 session cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4890705/

相关文章:

sql - 如何在 SQL 中为 SQLMembershipProvider 添加用户和角色?

.net - 任何人都使用ASP .NET成员资格吗?

c# - 将数据与 ASP.NET 成员关联

c# - AspNet 成员(member)资格 - 集中登录

asp.net - 将 Windows 身份验证与表单例份验证混合使用

ASP.Net成员(member)登录问题

c# - TransactionScope 中的 Membership.GetUser() 抛出 TransactionPromotionException

asp.net - Facebook C# MVC MVC3 存储 token 以及 asp.net 成员(member)场景

php - 在 PHP 中使用 ASP.NET 成员资格

c# - 让用户不属于任何角色的更好方法?