- - PR -
フォーム認証で正しくリダイレクトされない
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-02-06 18:07
VS2005、ASP.NET初心者です。よろしくお願いします。
フォーム認証のユーザー管理をデータベース・サーバで行うプログラムを 下記サイトを参考に組みましたが、ログイン後に再度ログイン画面が表示 され、正しくリダイレクトされません。 http://www.atmarkit.co.jp/fdotnet/dotnettips/147aspusrdb/aspusrdb.html ------------------------------------------------------------------------------- LoginForm.aspx: Protected Sub objBtn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles objBtn.Click If (Page.IsValid = False) Then Exit Sub '*************************************** ' usertable(DB)を使用した認証ロジック '*************************************** ' 入力されたユーザーID、パスワードでusrテーブル内のレコードを検索 Dim objDb As New SqlConnection("Data Source=XXXX;Initial Catalog=XXXXDB;Integrated Security=True") Dim objCom As New SqlCommand("SELECT * FROM usertable WHERE userid=@uid AND password=@passwd", objDb) objCom.Parameters.AddWithValue("@uid", txtUsr.Text) objCom.Parameters.AddWithValue("@passwd", FormsAuthentication.HashPasswordForStoringInConfigFile(txtPass.Text, "SHA1")) objDb.Open() Dim objDr As SqlDataReader = objCom.ExecuteReader() If objDr.Read() Then ' 検索の結果、該当するレコードが存在した場合、認証は成功 FormsAuthentication.RedirectFromLoginPage(txtUsr.Text, False) Else objLbl.Text = "正しいユーザーID、パスワードを入力してください" End If objDb.Close() -------------------------------------------------------------------------------- web.config: <authentication mode="Forms"> <forms name=".KikanWeb" loginUrl="LoginForm.aspx" protection="All" timeout="30"/> </authentication> -------------------------------------------------------------------------------- 最初のページにアクセスしたときのアドレスバーには下記のようにURLが表示されています。 http://XXXX/LoginForm.aspx?ReturnUrl=%2fauth%2fDefault.aspx また、同じ現象をWEBで検索した結果下記のページが見つかり、参考にしてみましたが 解決できませんでした。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2641&forum=7&2 正しくリダイレクトされない原因として考えられる要素がわかりません。 よろしくお願いします。 環境 OS Windows2003 server R2 IIS 6.0 VS2005 |
|
投稿日時: 2008-02-07 00:24
ステップ実行してみてください
FormsAuthentication.RedirectFromLoginPage(txtUsr.Text, False) この行、通ってますか?通ってないなら単に該当ユーザがいないんでしょう。 パスワードはちゃんとSHA1で暗号化したものが格納されていますか? |
|
投稿日時: 2008-02-07 08:56
ステップ実行でしましたが、問題なく
FormsAuthentication.RedirectFromLoginPage(txtUsr.Text, False)のコード を通っています。 パスワードもSHA1で暗号化したものが格納されています。 |
|
投稿日時: 2008-02-07 10:26
authorization要素の設定はどうなってます?
|
|
投稿日時: 2008-02-07 11:00
/auth 配下のweb.configでは
<system.web> <authorization> <deny users="?" /> </authorization> </system.web> としています。 |
|
投稿日時: 2008-02-07 13:39
自己解決しました。
原因は、ログインフォーム(LoginForm.aspx)の検証コントロールの検証スクリプトを クライアント側で実行させないようにする為、ログインフォームの@Pageディレクティ ブにClientTarget="downlevel"を追加していたのですが、これを削除すると正しくリダイレクトしました。 【参考URL】 http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpqstart/html/cpsmpnetsamples-aspnetservercontrolformvalidation.asp なぜ正しくリダイレクトしないのかは不明なので別スレッドをたててみます。 ベル様、どっとねっとふぁん様ありがとうございました。 |
1