FormsAuthentication.SignOut 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
从浏览器删除 Forms 身份验证票证。
public:
static void SignOut();
public static void SignOut ();
static member SignOut : unit -> unit
Public Shared Sub SignOut ()
示例
下面的代码示例使用 SignOut 方法清除 forms-authentication Cookie,并使用 方法将用户重定向到登录页 RedirectToLoginPage 。
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public void LoginLink_OnClick(object sender, EventArgs args)
{
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
Welcome <b><%=User.Identity.Name%></b>. Not <b><%=User.Identity.Name%></b>?
Click <asp:LinkButton id="LoginLink" Text="here"
OnClick="LoginLink_OnClick" runat="server" />
to sign in.
<!-- Page Contents -->
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Public Sub LoginLink_OnClick(sender As Object, args As EventArgs)
FormsAuthentication.SignOut()
FormsAuthentication.RedirectToLoginPage()
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
Welcome <b><%=User.Identity.Name%></b>. Not <b><%=User.Identity.Name%></b>?
Click <asp:LinkButton id="LoginLink" Text="here"
OnClick="LoginLink_OnClick" runat="server" />
to sign in.
<!-- Page Contents -->
</form>
</body>
</html>
注解
方法 SignOut 从 Cookie 或 URL 中删除 forms-authentication 票证信息(如果 CookiesSupported 为 false
)。 可以将 SignOut 方法与 RedirectToLoginPage 方法结合使用,以注销一个用户并允许其他用户登录。
如果以无 Cookie 模式以独占方式运行,或者如果同时支持经过身份验证的用户和匿名用户,则删除匿名标识符后需要执行特殊业务逻辑时,应显式控制对登录页的重定向。
SignOut调用 方法时,通过将 参数设置为 false
来调用 Redirect 方法endResponse
,重定向到应用程序的登录页。 重定向在当前页完成执行之前不会发生,因此可以运行其他代码。 如果代码不包含到另一个页面的显式重定向,则用户将重定向到在应用程序的配置文件中配置的登录页。
SignOut调用 方法只会删除表单身份验证 Cookie。 Web 服务器不存储有效和过期的身份验证票证,以供以后比较。 如果恶意用户获取有效的表单身份验证 Cookie,这会使你的站点容易受到重播攻击。 若要提高使用表单身份验证 Cookie 时的安全性,应执行以下操作:
通过将 属性
false
设置为 SlidingExpiration ,对表单身份验证 Cookie 使用绝对过期。 这限制了可重播被劫持 Cookie 的窗口。仅通过安全套接字层 (SSL) 颁发和接受身份验证 Cookie,方法是将 属性设置为 RequireSSL
true
,并在 SSL 下运行整个网站。 RequireSSL将 属性设置为true
可确保 ASP.NET 永远不会通过非 SSL 连接向浏览器发送身份验证 Cookie;但是,客户端可能不会遵循 Cookie 上的安全设置。 这意味着客户端可能会通过非 SSL 连接发送表单身份验证 Cookie,从而使它容易受到劫持。 可以通过在 SSL 下运行整个网站,阻止客户端以明文形式发送表单身份验证 Cookie。在服务器上使用永久性存储来记录用户何时注销网站,然后使用应用程序事件(例如 PostAuthenticateRequest 事件)来确定当前用户是否已使用 Forms 身份验证进行身份验证。 如果用户已通过表单身份验证进行身份验证,并且永久性存储中的信息指示用户已注销,请立即清除身份验证 Cookie 并将浏览器重定向回登录页。 成功登录后,更新存储以反映用户已登录。 使用此方法时,应用程序必须跟踪用户的登录状态,并且必须强制空闲用户注销。