通过FormsAuthentication使Cookie设置过期

时间:2011-09-30 09:03:45

标签: asp.net login forms-authentication membership logout

我在登录时使用过MemberShipUser API我们正在验证用户并创建FormAuthentication

FormAuthentication.SetAuth(username, false);

现在如果用户没有注销并直接关闭浏览器,则不会调用FormAuthentication.SignOut方法。

因此,当我们重新打开网站时,用户已经登录。

2 个答案:

答案 0 :(得分:1)

将超时值配置为适当的数字或使用cookie less forms authentication。

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="Login.aspx"
           protection="All"
           timeout="30" <----------------------------Tune this
           name=".ASPXAUTH" 
           path="/"
           requireSSL="false"
           slidingExpiration="true" <--------------------- Tune this
           defaultUrl="default.aspx"
           cookieless="UseDeviceProfile" <--------------------- Or Turn off cookies
           enableCrossAppRedirects="false" />
  </authentication>
</system.web>

http://msdn.microsoft.com/en-us/library/ff647070.aspx#pagexplained0002_cookielessforms

答案 1 :(得分:0)

身份验证Cookie仍然有效。当用户再次打开该站点时,cookie表示用户仍然登录。

你可以让cookie短暂存在,这样就更有可能过期了:

<authentication mode="Forms">
   <forms loginUrl="Login/" timeout="5"/>
</authentication>

但是afaik,如果用户没有注销,他们将不会立即注销。

^^除非你没有使用像hasan-khan所说的cookie(它在查询字符串中传递一个看起来不太好看的id。)