这个应用程序正在运行的环境中,一些用户仍然在使用IE7,如果这有任何区别。我们所看到的是,偶尔有人登录后,其他人登录,他们仍然从上一个人的残留物,它可能显示的人的个人资料。如有任何建议,将不胜感激。
在我的asp.net mvc应用程序中,我使用下面的注销方法
public ActionResult LogOff()
{
System.Web.HttpContext.Current.Response.Cookies.Clear();
FormsService.SignOut();
Session["User"] = null;
Session.Clear();
Session.Abandon();
Session.RemoveAll();
return Redirect("/");
}该应用程序使用保存到数据库中的会话,因为它运行在两个不同的web服务器上。
下面是来自web.config的一些设置
<sessionState sqlConnectionString="LiveDB" />
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<membership>
<providers>
<clear />
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="LiveDB" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="50" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear />
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="LiveDB" applicationName="/" />
</providers>
</profile>
<roleManager enabled="true">
<providers>
<clear />
<add connectionStringName="LiveDB" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
<add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>发布于 2013-08-16 20:10:16
如果你用FormAuthentication像这样登录-
FormsAuthentication.SetAuthCookie("username", false);那么注销应该是
FormsAuthentication.SignOut();如果仍然存在问题,可以强制cookie像this一样过期。
发布于 2013-08-16 20:10:08
Membership和Session提供程序分别工作。两名成员可使用一次会议。这不是一条规则,但它可以。
我不确定,但我对你的问题有个建议。Session拥有IsNewSession属性。Microsofts说,它“获得一个值,指示会话是否使用当前请求创建。”
因此,您可以尝试检查登录用户的Session是否是新的,因为他可能会与旧用户共享会话,这可能是看到其他用户配置文件的原因之一。
https://stackoverflow.com/questions/18280972
复制相似问题