asp.netのログインフォーム検証検証フォームの3つの方法FormsAuthentication.SetAuthCookie; FormsAuthentication.RedirectFromLoginPage、FormsAuthenticationTicket
我々が正常に着陸した後、すべての目的の一つで、次の3つの方法を使用します。認証チケットを作成して、クッキーに添付し、
私たちは、フォーム認証を使用する場合、あなたはHttpContext.Current.User.Identity.IsAuthenticated使用することができ上陸かどうかを判断するために(あるいはあなたがRequest.IsAuthenticatedを使用することができ、これは実際に検証するために呼び出すUser.Identity.IsAuthenticatedである);およびこの判断には、ユーザーのログインを決定するためにCookie情報に依存しているかどうか。
クッキータグをクリアするFormsAuthentication.SignOut
フォーム認証はAsp.netがチェックする時間である、クッキーを依存している私たちのコンフィギュレーション・ファイル名クッキー、クッキーに指定され、現在のユーザーのログオンの状態を判断するための要求を復号化し
以下の3つの方法は、そのweb.configファイルで提供された検証セットを形成するために使用されます
<認証モード= "フォーム"> <フォーム名= "MyCookie" loginUrl = "Login.aspxの"保護= "すべて"タイムアウト= "60" /> </認証>
1:FormsAuthentication.SetAuthCookie
デモ:
FormsAuthentication.SetAuthCookie(UserInfo.UserName、偽、FormsAuthentication.FormsCookiePath)。
[System.Web.Security.FormsAuthentication.SetAuthCookieは(「魚」、偽) ; ]の後、行わAsp.net、この質問への答えは非常に簡単です:彼らはAsp.netを見て、それを達成Reflector.exeを使用しました。
ここでは、サインインするとクッキーについて残して、私はクッキークッキーAsp.netでダイレクトな外観を作成します確信することができ、私は有効なログインを作成したと考えられていることを認識することができます。コードを見てください:
あなたは、このコードを実行する場合は、見つける:[Request.IsAuthenticated] trueを返し、ログイン状態のショーを「ログイン」。
この時点で、我々は結論を引き出すことができます。 フォーム認証はクッキー依存している、Asp.netは、私たちは、コンフィギュレーション・ファイル名のクッキーに指定され、クッキーとは、現在のユーザーのログインの状態を判断するための要求を復号化しチェックする時間です。
2:FormsAuthenticationTicket
デモ:
認証チケット作成//// (FormsAuthenticationTicket AuTicket FormsAuthenticationTicket新しい新しい= 1、UserInfo.UserName、DateTime.Now、DateTime.Now.AddMinutes(30)、 偽、Request.UserHostAddressを); ////紙幣暗号化され た文字列authTicket = FormsAuthentication.Encrypt(AuTicket); ////クッキーとして保存された暗号化されたチケット HttpCookie新しい新しいCOOがHttpCookie(FormsAuthentication.FormsCookieName、authTicketを)=; coo.Secure = falseに; coo.Expires = AuTicket.Expiration; coo.Path = FormsAuthentication.FormsCookiePath; ////新しいクッキーの追加 Response.Cookies.Add(COO)を、
3:FormsAuthentication.RedirectFromLoginPage
デモ:
FormsAuthentication.RedirectFromLoginPage(UserInfo.UserName、偽);
コメント:
名前 | 説明 |
---|---|
FormsAuthentication.RedirectFromLoginPage(文字列、ブール型) | 認証されたユーザは、最初にリクエストURLまたは既定のURLにリダイレクトされます。 |
FormsAuthentication.RedirectFromLoginPage(文字列、論理値、文字列) | 使用すると、認証されたユーザーが最初にリクエストURLまたは既定のURLにリダイレクトされ、認証クッキークッキーパスが指定されているフォーム。 |
二番目のパラメータFormsAuthentication.RedirectFromLoginPage、真の永続的なCookieの予約を表明し、有効期限は、それがfalseの場合は、ブラウザの期限が切れる閉じ、時間のweb.configファイルです。
ログイン名とパスワードであなたの塗りつぶしを達成するために、このコード行は、成功はしたい元のページに移動します。
これは、パラメータ「false」を永久に保持しているか否かをクッキーが続いています。Trueの場合、永久的な、次の訪問は、そうでない場合は、このリンクが切断され、パスワードを入力するパスワードを入力する必要が次の時間を持っていないと述べました。このパラメータは、セキュリティ与え、あなたが横にユーザー名やパスワードのチェックボックスを置くことができ、ユーザが選択することができ、元の文は次のように:
System.Web.Security.FormsAuthentication.RedirectFromLoginPage(this.txtname.Text、this.CheckBox.Checked)。
違いRedirectFromLoginPageとFormsAuthenticationTicket
あなたはアイデンティティ.NETの非常に明確な検証がない場合は、こちらの記事を参照してください。本論文では、簡単な言語では、あなたがRedirectFromLoginPageとFormsAuthenticationTicketを完全に理解しています。
1)に基づいてユーザ認証用FormsAuthentication.RedirectFromLoginPage(UserName.Text、mycheckbox.Checked)
この方法は、生成された認証チケットをカプセル化し、クライアントに書き込み、ブラウザをリダイレクトし、一連の動作
RedirectFromLoginPage()メソッドは第一世代の世代認証チケットは、その後の文字列を暗号化された認証チケットの()メソッドFormAuthenticaiton.Encryptを呼び出し、その後、認証クッキー、クッキーを生成し、これをクライアントに送信されるのを待って、Response.Cookiesに追加されました。最後にRedirectFromLoginPageメソッドは、このページにリダイレクトされ、ページを最初に要求したユーザを取得するにはFormsAuthentication.GetRedirectUrlメソッドを呼び出します。
1、認証トークンが含まれているブラウザ、上のクッキーを作成します。
2は、ちょうどあなたが要求したページに戻り、
これらの二つの同等:
FormsAuthentication.SetAuthCookie(UserName.Text、mycheckbox.Checked);
のResponse.Redirect(FormsAuthentication.GetRedirectUrl(UserName.Text、mycheckbox.Checkedが)、
それはをFormsAuthenticationです.RedirectFromLoginPage方法は、多くの詳細を簡素化したパッケージと同等です。
2)FormsAuthenticationTicket、役割ベースの本人確認
上記以外の役割ベースの方法の、認証チケットを生成FormsAuthentication.RedirectFromLoginPageを達成するアクションクライアントのシリーズを書き戻す方法を使用して、ブラウザのリダイレクト。この方法は、ミックスにいくつかのカスタム設定を追加するために行うために、私たちは、ステップバイステップを達成するために、このメソッドを使用することはできませんいくつかは実際にロールベースの認証では、一連のアクションを完了するために、設定を保存し使用します。
1.まず、ユーザーに応じてマークし、ユーザーが認証チケット作成する文字列の役割に属し
FormsAuthenticationTicket(公衆を
1人のに設定するint型のバージョン、//
文字列の名前を、//ユーザーマーク
のDateTime issueDate、//問題のクッキー時間は、設定しますDateTime.Nowとして
のDateTimeの有効期限、有効期限//
BOOL isPersistent、//(発行され、永続的に設定した場合に必要な設定として、永続的かどうか
クッキーは、クッキーのは、設定が設定されている必要があり満了時)
文字列のuserData、//ここで使用良い役割のカンマ区切りの文字列の上で調製
リフレッシュクッキーがあるためクッキーのパスと一致発行しようとする、「/」に設定された文字列cookiePath //
このルートを使用
)。
FormsAuthenticationTicketチケット=新しいFormsAuthenticationTicket(1、 "ケント"、DateTime.Now、DateTime.Now.AddMinutes(30)、偽、UserRoles、 "/")。
2.認証チケットクッキー生成
列に2.1暗号認証チケット配列を
、文字列HashTicket = FormsAuthentication.Encrypt(チケット)
2.2クッキー生成
HttpCookie userCookie HttpCookie新しい新=(FormsAuthentication.FormsCookieName、HashTicket)を、
FormsAuthentication.FormsCookieNameでありますweb.configファイルの身元を認証クッキーの名前を設定し得るように、デフォルトでは「.ASPXAUTH」です。
プロパティが永続クラスでisPersistent認証チケットを設定されている場合、クッキーはクッキーがするように属性を設定する必要があります有効期限永続的なCookieは、クライアントのクッキーファイルに保存されます。
クライアントへ3.クッキー認証チケット出力は
Response.Cookies.Add(userCookie)を介して出力に接続認証チケット回収クッキークッキーは、クライアントに送信します。
4.ページにユーザー最初のテストアプリケーションをリダイレクト。
コードの検証は(このコードは、イベントページのlogin.aspxの処理コード上のログインボタンをクリックすることです):
空Buttonlogin_Clickプライベート(オブジェクト送信者、System.EventArgs E)
{
文字列のユーザ= TextBoxUser.Text; //ユーザー名の読み
文字列のパスワードを= TextBoxPassword.Text; //パスワードを読んで
(確認してください(ユーザー、パスワード)場合 ==真) //ユーザー認証に使用する方法の正当性を確認し
、{
文字列userRolesを= UserToRole(ユーザーが); //役割UserToRole文字列を取得するメソッドを呼び出し
FormsAuthenticationTicketチケット=新しいFormsAuthenticationTicket(1、ユーザー、DateTime.Now、DateTime.Now.AddMinutes( 30)、偽、userRolesは、 " /"); // オブジェクトの認証チケットの構築
文字列HashTicket = FormsAuthentication.Encrypt(チケット); // 暗号化シーケンスは、チケット検証の文字列である
HttpCookie userCookie =新しいHttpCookie(FormsAuthentication.FormsCookieName、 HashTicket );
//クッキーを生成
Context.Response.Cookies.Add(UserCookie); //出力クッキー
Context.Response.Redirect(Context.Request [ "にreturnurl"]); //最初のページは、ユーザーのアプリケーションにリダイレクトされます
}
他
{
//ユーザーではありません肯定応答コード
}
}
//この方法は、ユーザの正当性を確認するために使用される
プライベート確認BOOL(ユーザー文字列、文字列のパスワード)
{
//適切なコードが
}
//この方法は、ユーザの役割の全てを取得コンマに対応するために使用されます文字列分割
プライベートUserToRoleストリング(文字列ユーザ)
{
//対応するコードを
}
3)まとめて
認証5ステップ:
1、認証チケット作成
2、暗号化、認証チケット
Cookieの生成、3を
4、クライアントにクッキー出力
5、ページのリダイレクト
その他の参考文献:
(1):ユーザー名を覚えておくために、ユーザー名の入力ボックス、次の再入力して保存
(2):精巧なクッキー