0

ASP.NET 4.5 Web フォームで新しいログイン コントロールを使用しており、SQL メンバーシップ プロバイダーに対してユーザー名とパスワードを確認する必要があります。既にメンバーシップとロールをセットアップし、Web アプリケーション ツールを使用してユーザーを作成しました。

ログインしようとすると、ユーザー名とパスワードがメンバーシップ プロバイダーに対して認証されません。web.confgi の関連エントリは次のとおりです。

   <membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add connectionStringName="WebTrendsConnectionString" enablePasswordRetrieval="false"
      enablePasswordReset="true" requiresQuestionAndAnswer="false"
      requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"
      minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
      applicationName="/" name="DefaultMembershipProvider" 
      type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, 
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
  <providers>
    <add connectionStringName="DefaultConnection" applicationName="/"
      name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, 
      System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</roleManager>

更新: WSAT で作成されたユーザー名とパスワードではまだログインできません。これが私の接続文字列とプロバイダーです:

<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="Data Source=PKFDB0;Initial Catalog=WebTrends; 
Integrated Security=False; User ID=*****; Password=******;" 
providerName="System.Data.SqlClient"/>

 <membership>
  <providers>
    <add connectionStringName="LocalSqlServer" enablePasswordRetrieval="true"
      enablePasswordReset="true" requiresQuestionAndAnswer="false"
      requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"
      minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
      applicationName="/" name="DefaultMembershipProvider" 
      type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, 
      Version=1.0.0.0, 
      Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</membership>
<roleManager enabled="true">
  <providers>
    <add connectionStringName="LocalSqlServer" applicationName="/"
      name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, 
      System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</roleManager>
4

3 に答える 3

2

一般的ではない 2 つのデータベース (user db と role db) に対して検証する場合を除き、メンバーシップと roleManager は同じ接続文字列を使用する必要があります。

connectionStringName="WebTrendsConnectionString"

connectionStringName="DefaultConnection"

更新: などのアプリケーション名を明示的に設定できますapplicationName="WebTrends"か? 次に、 を使用してロールとユーザーを作成できることを確認しますASP.Net Configuraton

ここに画像の説明を入力

于 2012-10-31T19:43:09.753 に答える
1

1: 何かエラーが発生していますか、それとも単に無効なログインですか?

2: メンバーシップとロールの両方のプロバイダー セクションに追加します。

 <membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <clear/>
    ......
  </providers>
</membership>

3: メンバーシップとロールの両方に defaultProvider を設定していることを確認してください。

4: 上記の変更を行った後、新しいユーザーを作成してログインを試みます。

5:編集: Login Authenticate イベントの空の構造がないことを確認してください。

于 2012-10-31T21:39:38.933 に答える
0

LoginコントロールはASP.NET2.0で追加され、デフォルトでメンバーシッププロバイダーを使用します。

Loginコントロールは、メンバーシッププロバイダーを使用してユーザー資格情報を取得します。特に指定しない限り、ログインコントロールはWeb.configファイルで定義されたデフォルトのメンバーシッププロバイダーを使用します。別のプロバイダーを指定するには、MembershipProviderプロパティを、アプリケーションのWeb.configファイルで定義されているメンバーシッププロバイダー名の1つに設定します。詳細については、メンバーシッププロバイダーを参照してください。

カスタム認証サービスを使用する場合は、OnAuthenticateメソッドを使用してサービスを呼び出すことができます。

メンバーシッププロバイダーを既に設定している場合はLogin、ページにコントロールを追加するだけで済みます。ログインを検証するためのコードは必要ありません。

于 2012-10-31T18:46:37.203 に答える