3

以前にユーザー名とパスワードを正常に入力したユーザーのログイン資格情報を記憶するようにログイン コントロールをセットアップしようとしています。remember me プロパティを true に設定しましたが、Cookie を読み取ってユーザーを自動ログインできるイベントがトリガーされないようです。

これを達成するための簡単なメカニズムはありますか?

4

1 に答える 1

5

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 は、ユーザーの認証を不必要に要求し続けることはありません。

于 2008-10-03T01:36:27.973 に答える