FormsAuthenticationTicket クラス
アセンブリ: System.Web (system.web.dll 内)


FormsAuthenticationTicket クラスは、フォーム認証で認証済みユーザーを識別するのに使用される認証チケットを表すオブジェクトを作成するために使用されます。フォーム認証チケットのプロパティと値は、Cookie または URL に格納される暗号文字列に変換されたり、またこれらの暗号文字列から元に戻したりできます。
FormsAuthentication クラスは、FormsAuthenticationTicket から Cookie または URL に格納できる文字列値を作成する Encrypt メソッドを提供します。また、FormsAuthentication クラスには、フォーム認証 Cookie または URL から取得した暗号化された認証チケットから FormsAuthenticationTicket オブジェクトを作成する Decrypt メソッドもあります。
現在の認証済みユーザーの FormsAuthenticationTicket には、FormsIdentity クラスの Ticket プロパティを使用してアクセスできます。現在の FormsIdentity オブジェクトには、現在の User の Identity プロパティを FormsIdentity 型としてキャストすることによりアクセスできます。

FormsCookieName を使用して Encrypt メソッドの結果を Cookie に格納し、GetRedirectUrl メソッドから返される URL にユーザーをリダイレクトするコード例を次に示します。
<%@ Page Language="VB" %> <%@ Import Namespace="System.Web.Security" %> <script runat="server"> Private Sub Login_Click(sender As Object, e As EventArgs) ' Create a custom FormsAuthenticationTicket containing ' application specific data for the user. Dim username As String = UserNameTextBox.Text Dim password As String = UserPassTextBox.Text Dim isPersistent As Boolean = PersistCheckBox.Checked If Membership.ValidateUser(username, password) Then Dim userData As String = "ApplicationSpecific data for this user." Dim ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, _ username, _ DateTime.Now, _ DateTime.Now.AddMinutes(30), _ isPersistent, _ userData, _ FormsAuthentication.FormsCookiePath) ' Encrypt the ticket. Dim encTicket As String = FormsAuthentication.Encrypt(ticket) ' Create the cookie. Response.Cookies.Add(New HttpCookie(FormsAuthentication.FormsCookieName, encTicket)) ' Redirect back to original URL. Response.Redirect(FormsAuthentication.GetRedirectUrl(username, isPersistent)) Else Msg.Text = "Login failed. Please check your user name and password and try again." End If End Sub </script> <html> <head> <title>Forms Authentication Login</title> </head> <body> <form runat="server"> <span style="BACKGROUND: #80ff80"> <h3>Login Page</h3> </span> <asp:Label id="Msg" ForeColor="maroon" runat="server" /><P> <table border=0> <tbody> <tr> <td>Username:</td> <td><asp:TextBox id="UserNameTextBox" type="text" runat="server" /></td> <td> <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ErrorMessage="*" Display="Static" ControlToValidate="UserNameTextBox" /> </td> </tr> <tr> <td>Password:</td> <td><asp:TextBox id="UserPassTextBox" TextMode="Password" runat="server" /></td> <td> <asp:RequiredFieldValidator id="RequiredFieldValidator2" runat="server" ErrorMessage="*" Display="Static" ControlToValidate="UserPassTextBox" /> </td> </tr> <tr> <td>Check here if this is <u>not</u><br>a public computer:</td> <td><asp:CheckBox id="PersistCheckBox" runat="server" autopostback="true" /></td> </tr> </tbody> </table> <input type="submit" value="Login" runat="server" onserverclick="Login_Click" /> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Security" %> <script runat="server"> private void Login_Click(Object sender, EventArgs e) { // Create a custom FormsAuthenticationTicket containing // application specific data for the user. string username = UserNameTextBox.Text; string password = UserPassTextBox.Text; bool isPersistent = PersistCheckBox.Checked; if (Membership.ValidateUser(username, password)) { string userData = "ApplicationSpecific data for this user."; FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1 , username, DateTime.Now, DateTime.Now.AddMinutes(30), isPersistent, userData, FormsAuthentication.FormsCookiePath); // Encrypt the ticket. string encTicket = FormsAuthentication.Encrypt(ticket); // Create the cookie. Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket)); // Redirect back to original URL. Response.Redirect(FormsAuthentication.GetRedirectUrl(username, isPersistent)); } else { Msg.Text = "Login failed. Please check your user name and password and try again."; } } </script> <html> <head> <title>Forms Authentication Login</title> </head> <body> <form runat="server"> <span style="BACKGROUND: #80ff80"> <h3>Login Page</h3> </span> <asp:Label id="Msg" ForeColor="maroon" runat="server" /><P> <table border=0> <tbody> <tr> <td>Username:</td> <td><asp:TextBox id="UserNameTextBox" type="text" runat="server" /></td> <td> <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ErrorMessage="*" Display="Static" ControlToValidate="UserNameTextBox" /> </td> </tr> <tr> <td>Password:</td> <td><asp:TextBox id="UserPassTextBox" TextMode="Password" runat="server" /></td> <td> <asp:RequiredFieldValidator id="RequiredFieldValidator2" runat="server" ErrorMessage="*" Display="Static" ControlToValidate="UserPassTextBox" /> </td> </tr> <tr> <td>Check here if this is <u>not</u><br>a public computer:</td> <td><asp:CheckBox id="PersistCheckBox" runat="server" autopostback="true" /></td> </tr> </tbody> </table> <input type="submit" value="Login" runat="server" onserverclick="Login_Click" /> </form> </body> </html>

System.Web.Security.FormsAuthenticationTicket


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- FormsAuthenticationTicket クラスのページへのリンク