以前にユーザー名とパスワードを正常に入力したユーザーのログイン資格情報を記憶するようにログイン コントロールをセットアップしようとしています。remember me プロパティを true に設定しましたが、Cookie を読み取ってユーザーを自動ログインできるイベントがトリガーされないようです。
これを達成するための簡単なメカニズムはありますか?
以前にユーザー名とパスワードを正常に入力したユーザーのログイン資格情報を記憶するようにログイン コントロールをセットアップしようとしています。remember me プロパティを true に設定しましたが、Cookie を読み取ってユーザーを自動ログインできるイベントがトリガーされないようです。
これを達成するための簡単なメカニズムはありますか?
ASP.NET 2.0でのフォーム認証には Google が必要です
(web.config を介して) アプリケーションをセットアップする必要があり、IIS 設定の変更も必要になる場合があります。それはすべて非常に簡単ですが、使用できる設定が山ほどあるので、いくつかの記事を読むことをお勧めします. ScottGu の ブログ エントリには、さまざまな詳細が記載されています。
www.asp.netには、これらのセキュリティ チュートリアルを含む多くの優れたビデオもあります。
「方法: ASP.NET ログイン ページを作成する」および「チュートリアル: メンバーシップとユーザー ログインを使用して Web サイトを作成する」を試してください。思い出すと、Sql Server メンバーシップ プロバイダーを使用しない限り、自分で認証を行う必要があります。その場合でも、データベースと web.config をセットアップする必要があります。
基本的に、構成を適切に設定すると、ログイン ページが表示されます。そのログイン ページで、認証後に認証チケットを作成するようフォーム認証に指示します。
if (VerifyUser(name, password) ) // this is not a framework method
FormsAuthentication.RedirectFromLoginPage(
userName, false); // no persistent cookie
認証チケットデータを(他の場所から)読み取りたい場合。
// output just writes to a StringBuilder 'sb'
output(sb, "Identity.AuthenticationType", Page.User.Identity.AuthenticationType);
FormsIdentity fi = Page.User.Identity as FormsIdentity;
if (fi == null)
{
output(sb, "Identity Type", Page.User.Identity.ToString());
return;
}
output(sb, "FormsIdentity.Ticket.IssueDate", fi.Ticket.IssueDate);
output(sb, "FormsIdentity.Ticket.Expiration", fi.Ticket.Expiration);
output(sb, "FormsIdentity.Ticket.Name", fi.Ticket.Name);
output(sb, "FormsIdentity.Ticket.CookiePath", fi.Ticket.CookiePath);
output(sb, "FormsIdentity.Ticket.UserData", fi.Ticket.UserData);
output(sb, "FormsIdentity.Ticket.Version", fi.Ticket.Version);
output(sb, "FormsIdentity.Ticket.IsPersistent", fi.Ticket.IsPersistent);
ポイントは、一度認証されると、認証チケットの有効期限が切れていて、ユーザーが保護されたページにいる場合にのみ、asp.net がユーザーをログイン ページにリダイレクトすることです。Asp.net は、ユーザーの認証を不必要に要求し続けることはありません。