1

ASP.NET v2.0 にあるメンバーシップ プロバイダー パラダイムで見つけたいくつかの チュートリアルを使用して、認証を構成しようとしています。チュートリアルの例に従いましたが、FormsAuthentication.RedirectFromPageメソッドを適切に機能させることができないようです。ログインを試みると、ユーザー資格情報は検証さMembership.ValidateUserれますが、ページは Default.aspx ではなく Login.aspx に返されます。これは、私の web.config からの関連するスニペットです。

...
<authentication mode="Forms">
  <forms loginUrl="Login.aspx" protection="All" timeout="60" name="POTOKCookie" requireSSL="false" path="/FormsAuth"
         slidingExpiration="true" cookieless="UseCookies" enableCrossAppRedirects="false" defaultUrl="~/Default.aspx"/>
</authentication>
<authorization>
  <deny users="?" />
</authorization>
...
<membership defaultProvider="CustomizedProvider">
  <providers>
    <clear />
    <add name="CustomizedProvider"
         type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         connectionStringName="LoginDB2"
         applicationName="POTOK"
         minRequiredPasswordLength="5"
         minRequiredNonalphanumericCharacters="0" />
  </providers>
</membership>

接続文字列が正しいことを確認し (Membership.ValidateUser が正常に動作しているように見えるため)、Login.aspx ページの UI に ASP.NET ログイン コントロールを使用しています。認証イベント ハンドラのコードは次のとおりです。

Protected Sub Login1_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs) Handles Login1.Authenticate
    If (Membership.ValidateUser(Login1.UserName, Login1.Password)) Then
        FormsAuthentication.RedirectFromLoginPage(Login1.UserName, Login1.RememberMeSet)
    End If
End Sub

URL ( http://localhost/Project )にアクセスすると、 http://localhost/Project/Login.aspxに移動し、「ログイン」後の URL はhttp://localhost/Project/Login です。 aspx?ReturnUrl=%2fProject%2fDefault.aspx

構成手順を見逃していませんか?

4

2 に答える 2

0

ASP.NET メンバーシップで Login コントロールを使用する場合、認証を実行するためのコードを記述する必要はありません。ただし、独自の認証ロジックを作成する場合は、Login コントロールの Authenticate イベントを処理し、カスタム認証コードを追加できます。

したがって、コントロール自体が ValidateUser とリダイレクトの呼び出しを担当しているため、Login1_Authenticate イベントを削除することをお勧めします。

Login コントロールの DestinationPageUrl プロパティも確認してください。

DestinationPageUrl プロパティの値を指定しない場合、ユーザーはログインに成功した後に要求した元のページにリダイレクトされます。したがって、このプロパティは設定しないでください。

于 2009-08-18T16:47:42.247 に答える