FormsAuthentication.SetAuthCookie; FormsAuthentication.RedirectFromLoginPa...
ログインに成功した後、以下の3つのメソッドを使用します。すべて同じ目的で、認証チケットを作成し、それをクッキーに添付します。
Forms認証メソッドを使用する場合、HttpContext.Current.User.Identity.IsAuthenticated(またはRequest.IsAuthenticatedも使用可能)を使用することができる。IsAuthenticated (または Request.IsAuthenticated を使用して、実際には User.Identity.IsAuthenticated を呼び出します) を使用してユーザーがログインしているかどうかを判断します。この判断は、クッキー内の情報に依存して、ユーザーがログインしているかどうかを判断しています。
FormsAuthentication.SignOutは、このクッキートークンをクリアするために使用されます。
フォーム認証はクッキーに依存しており、Asp.netは設定ファイルに指定したクッキー名を毎回チェックし、このクッキーを解読して現在のリクエストユーザーのログイン状態を判断しています。
以下の3つの方法の使用は、web.configでフォーム認証を設定することが前提です。
// instantiate two QDockWidgets
dock1 = new QDockWidget;
dock2 = new QDockWidget;
//set the title name
dock1->setWindowTitle("dock1");
dock2->setWindowTitle("dock2");
//set the background black
QPalette pal;//define a QPalette
pal.setColor(QPalette::Background, Qt::green);
dock1->setAutoFillBackground(true);//add this sentence, when setting the color below, you can set the color of the title and the body of the control, otherwise you can only set the color of the title bar
dock1->setPalette(pal);
pal.setColor(QPalette::Background,Qt::blue);
this->addDockWidget(Qt::LeftDockWidgetArea,dock1);//dock1 to the left of the main interface
dock2->setAutoFillBackground(true);
dock2->setPalette(pal);
// Arrange controls dock1 and dock2
splitDockWidget(dock1,dock2,Qt::Horizontal);//let dock1 and dock2 align horizontally, with dock1 on the left and dock2 on the right
splitDockWidget(dock1,dock2,Qt::Vertical);//Make dock1 and dock2 align vertically, with dock1 on top and dock2 on the bottom
//set the size of dock1 and dock2, if you want dock1 to take up more space and dock2 to take up less space, you can set the maximum and minimum values of dock1 to be larger and dock2 to be smaller
dock1->setMaximumSize(300,800);//Note: it is best to let the maximum value of dock1 + the maximum value of dock2 = the size of the main interface
dock1->setMinimumSize(300,600);
dock2->setMaximumSize(300,480);
dock2->setMinimumSize(300,280);
1: FormsAuthentication.SetAuthCookie
デモ
FormsAuthentication.SetAuthCookie(UserInfo.UserName, false, FormsAuthentication.FormsCookiePath);
System.Web.Security.FormsAuthentication.SetAuthCookie("fish", false);] Asp.net が何かした後、この質問に対する答えは実はとても簡単です: Reflector.exe を使って Asp net の実装を自分で見てください。
ここでは、ログインがクッキーと関係していることを納得させるために、直接クッキーを作成し、Asp.netが私が作成したクッキーを認識し、ログインを有効とみなすことができるかどうか確認します。のコードをご覧ください。
このコードを実行すると、次のようになります。[Request.IsAuthenticated] は true を返し、ログイン状態は "Logged in" と表示されます。
この時点で、フォーム認証はクッキーに依存しており、Asp.netは設定ファイルに指定したクッキー名を毎回チェックし、このクッキーを解読して現在の要求ユーザーのログイン状態を判断していると結論付けることができます。
2: FormsAuthenticationTicket(フォームズオーセンティケーションチケット
デモの様子です。
Create an authentication ticket
FormsAuthenticationTicket AuTicket =new FormsAuthenticationTicket(
1, UserInfo.UserName, DateTime.Now, DateTime.Now.AddMinutes(30),
false, Request.UserHostAddress);
Encrypt the ticket
string authTicket = FormsAuthentication.Encrypt(AuTicket);
Save the encrypted ticket as a cookie
HttpCookie coo =new HttpCookie(FormsAuthentication.FormsCookieName, authTicket);
coo.Secure =false;
Expires = AuTicket.Expiration;
Path = FormsAuthentication.FormsCookiePath;
Add a new cookie
Response.Cookies.Add(coo);
3: FormsAuthentication.RedirectFromLoginPage
デモンストレーションを行います。
FormsAuthentication.RedirectFromLoginPage(UserInfo.UserName, false);
コメント
<テーブル
FormsAuthentication.RedirectFromLoginPageの第2パラメータ、trueは永続的なクッキーを保持し、web.configで指定した時間に失効することを意味し、falseはブラウザを閉じたときに失効することを意味します。
このコードの行によって、ログイン名とパスワードを入力した後、最初に考えたページにうまくリダイレクトさせることができます。
これは、クッキーを永久に保持するかどうかを示すパラメータです。「真」の場合は永久に保持され、次回訪問時にパスワードを入力する必要がありません。「偽」の場合は、次回このリンクを切断するときにパスワードを入力する必要があります。このパラメータはユーザーが選択することもできます。なぜなら、セキュリティ上の理由から、ユーザー名またはパスワードの隣にチェックボックスを置き、元の文が
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()メソッドを呼び出し、認証チケットを文字列に暗号化し、認証クッキーを生成し、このクッキーをレスポンスに追加して、認証クッキーを生成します。Cookieに追加して、クライアントに送信されるのを待ちます。最後にRedirectFromLoginPageメソッドはFormsAuthentication.GetRedirectUrlメソッドを呼び出し、ユーザーがもともとリクエストしたページを取得し、そこにリダイレクトさせます。
1. ブラウザに認証トークンを含むCookieを作成する。
2. 先ほどリクエストしたページに戻ります。
この2つの文章に相当します。
FormsAuthentication.SetAuthCookie(UserName.Text,mycheckbox.Checked) を実行します。
Response.Redirect(FormsAuthentication.GetRedirectUrl(UserName.Text,mycheckbox.Checked));
つまり、FormsAuthentication.RedirectFromLoginPageメソッドは、多くの詳細を簡略化するラッパーメソッドと同等であることを意味します。
2) ロールベース認証のためのFormsAuthenticationTicket
RedirectFromLoginPageメソッドで、認証チケットの生成、クライアントへの書き戻し、ブラウザのリダイレクトなど、一連の動作を行います。このメソッドでは、いくつかのデフォルト設定を使用して一連のアクションを完了させます。これは、ロールベース認証ではこのメソッド1つで行うことはできず、いくつかのカスタム設定を追加できるように段階を踏んで行うことになります。
1. まず、ユーザーラベルとそのユーザーが所属するロールの文字列を元に認証チケットを作成する
public FormsAuthenticationTicket()
int バージョン、 // 1に設定
文字列名, //ユーザーラベル
DateTime issueDate, //クッキーが発行された時刻をDateTimeに設定。
DateTime expiration, //有効期限
bool isPersistent, //永続的かどうか(必要に応じて設定、永続的に設定された場合、いつ送信されるか
クッキーを使用する場合は、クッキーのExpiresを設定する必要があります)
string userData, //上で用意したカンマ区切りのロール文字列をここで使用します。
string cookiePath // "/"に設定、クッキーはリフレッシュされるので、これはクッキーが発行されたパスと同じであるべきです。
このパスを使用するには
);
FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket (1,"kent",DateTime.Now,DateTime.Now.AddMinutes(30), false, UserRoles,"/") ;
2. 認証チケット用Cookieの生成
2.1 認証チケットの暗号化された文字列への直列化
string HashTicket = FormsAuthentication.Encrypt (Ticket) ;
2.2 クッキーの生成
HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket) ;
FormsAuthentication.FormsCookieName は web.config で設定された認証クッキーの名前を取得するために使用され、デフォルトは " .ASPXAUTH" です。
認証チケットのisPersistentプロパティがpersistentクラスに設定されている場合、このクッキーがクライアントのクッキーファイルにpersistentクッキーとして保存されるように、このクッキーのExpiresプロパティを設定する必要があります。
3. 認証チケットのクッキーをクライアントにエクスポートする
出力クッキーのセットに(UserCookie)を追加し、Responseでクライアントに送信する。
4. ユーザーがリクエストした最初のテストページにリダイレクトする。
バリデーションセクションのコード(このセクションコードはlogin.aspxページでクリックされたログインボタンのイベント処理コードです)。
private void Buttonlogin_Click(object sender, System.EventArgs e)
{
string user = TextBoxUser.Text; //ユーザー名を読み込む
文字列パスワード = TextBoxPassword.Text; //パスワードの読み込み
if(Confirm(user,password) == true) //confirmメソッドでユーザーの正当性を確認します。
{
string userRoles = UserToRole(user); // UserToRole メソッドを呼び出して、ロール文字列を取得します。
FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket (1,user,DateTime.Now, DateTime.Now.AddMinutes(30), false,userRoles," ;/") ; //認証チケットオブジェクトを生成する。
string HashTicket = FormsAuthentication.Encrypt (Ticket) ; //シリアル化された認証チケットを文字列として暗号化する
HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket) ;
//Cookieを生成する
Context.Response.Cookies.Add (UserCookie) ; //Cookieを出力する
Context.Response.Redirect (Context.Request["ReturnUrl"]) ; // ユーザーがリクエストした最初のページにリダイレクトする。
}
さもなければ
{
// ユーザーの身元が確認できない場合のコード
}
}
//このメソッドは、ユーザーの正当性を確認するために使用されます。
private bool Confirm(文字列ユーザー,文字列パスワード)
{
//対応するコード
}
//このメソッドは、ユーザーに対応するすべてのロールをカンマ区切りの文字列で取得するために使用されます。
private string UserToRole(string user)
{
//対応するコード
}
3)概要
認証までの5つのステップ。
1. 本人確認チケットの作成
2、認証チケットの暗号化
3、クッキーの生成
4、クライアントへのCookieの出力
5、ページリダイレクト
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例