- - PR -
ASP.NETでForm認証の疑問
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-07-11 20:49
書籍などではASP.NETでForm認証を行うとき、
Web.configに認証するユーザ名とパスワードを設定すると書いてあるのですが 例えばデータベースのユーザテーブルに何千件ものデータがありそれを <user name="suzuki" password="123" /> <user name="sato" password="456" /> <user name="matsumoto" password="789" /> ・ ・ ・ 何千件分 ・ ・ のようにWeb.configにインポート(?)するのでしょうか。 その場合どのようにコーディングすればいいかさっぱり分かりません。 どなたか教えてください。 ASP.NET+VB.NETです。 | ||||||||
|
投稿日時: 2003-07-12 00:49
普通はWeb.configにユーザ名とパスワードを書かないと思います。
よくあるのは、下記のように匿名ユーザを禁止にして <authorization> <deny users="?" /> </authorization> login.aspxのOKボタンのハンドラで承認したら、下記メソッドを呼べばよいと思います。 FormsAuthentication.RedirectFromLoginPage(string ユーザ名, bool 別ブラウザで使用できるか); | ||||||||
|
投稿日時: 2003-07-14 08:55
こんにちは。
私はデータベースにユーザ/パスワードをしまって、 Form認証用の画面で入力と比較しています。 | ||||||||
|
投稿日時: 2003-07-14 11:45
catsさん、Jittaさんありがとうございます。
そもそも私の脳内での「認証」という概念があってるのかどうか教えていただきたいのですが・・・。 現在私も認証ページよりユーザ名・パスワードを入力し、データベース上のユーザテーブルの ユーザ名・パスワードとつき合わせ、合致したらServer.Transfer("Menu.aspx")としています。(Menu.aspxはログイン直後の初期ページ) 上記のやり方のままではユーザが任意のページのURLをアドレス欄に直接入力すると認証ページを通らなくても他のページに行ける。 →それを防止する手段が「認証」。 「認証」されたユーザはログアウトするまでは任意のページに行ける。 →各ページのLoad時に今のユーザが認証されているユーザなのかチェックするコードが必要。 という考え方でいいのでしょうか? ヘルプや色々な書籍を見てもいまいちピンと来ません。 ちなみにcatsさんの方法を試したところ Server.Transfer("Menu.aspx")で、Default.aspxが見つかりませんとのエラーが出ました。 RedirectFromLoginPageメソッドのヘルプを見ると 「クエリ文字列内の URL キーの内容に基づいてリダイレクトするか、 または返されるキーがない場合は Default.aspx にリダイレクトします。」 とありますが、どういった意味でしょうか? 申し訳ありませんがよろしくお願いします。 | ||||||||
|
投稿日時: 2003-07-14 12:35
だいたいあってると思いますが、Form認証を使うと最後の認証ユーザをチェックする コードを自分で書く必要がなくなって楽ですね。
認証後、最初にみせたいページはどういう名前で作ってますか? そのページをDefault.aspxにしておけばいいかと。 別の名前を使いたいときは、IISの設定で、一番最初によみにいくページを 指定してあげればいいと思います。 | ||||||||
|
投稿日時: 2003-07-14 14:46
小野@EACさん、ありがとうございます。
>別の名前を使いたいときは、IISの設定で、一番最初によみにいくページを >指定してあげればいいと思います。 認証後、最初にみせたいページは「Menu.aspx」というフォームで IISの「ドキュメント」タブに「Menu.aspx」だけにしましたが、 相変わらずDefault.aspxが見つかりませんとのエラーが出ます。 Menu.aspxをDefault.aspxにするとエラーは出ないんですが 認証前にアドレス欄にDefault.aspxや他のページを直接入力しても自由に行けるんです。 ちなみに RedirectFromLoginPageのあと、Server.Transfer("Menu.aspx")などと 認証後の画面を特に指定しなくてもいいんでしょうか? 申し訳ありませんが、よろしくお願いします。 | ||||||||
|
投稿日時: 2003-07-14 15:45
こんにちは。
私も同様の疑問を持っていました。 ログイン後に飛ばされるページは必ずDefault.aspxでなければいけないのでしょうか?私の場合は慣習的にindex.aspxを使いたいのですが、ログイン後の遷移先の変更の仕方が分からないので、仕方なくDefault.aspxというページを作っています。 なんとも悔しいので、もし宜しければどなたか遷移先のページの変更方法を教えていただけませんでしょうか。 | ||||||||
|
投稿日時: 2003-07-14 20:04
確か、Server.Transferなんてしなくてもかまいません。
IEの「アドレス」は出していますか?ここにちゃんと書いてあると思いますよ? こんな風に・・・ [http:]//localhost/Test/WebApplication1/LoginPage.aspx?ReturnUrl=%2fTest%2fWebApplication1%2fWebForm1.aspx 私のは、認証ページが「LoginPage.aspx」で、 最初に表示するページが「WebForm1.aspx」です。 「http://localhost/Test/WebApplication1/」 にアクセスしようとすると、Form認証で「LoginPage.aspx」にとばされます。 この中で認証後、「WebForm1.aspx」に移動します。 ※[http:]って書いたら、リンクになるのでした。失礼しました。 [ メッセージ編集済み 編集者: Jitta 編集日時 2003-07-14 20:27 ] |