0

.net メンバーシップを使用して SSO システムを作成しています。ユーザーの認証に成功しましたが、問題は、ユーザーがログインすると、ユーザーがログアウトしてから再度ログインしようとすると、次のログイン試行が失敗することです (「ログイン試行は成功しませんでした」)。

EG デフォルトのログイン ページから (.net ログイン コントロールを使用して) ユーザーがログイン/認証し、loginstatus.aspx にリダイレクトされます。ユーザーは loginstatus.aspx から (.net ログイン ステータス コントロールを使用して) ログアウトし、デフォルトのログイン ページに再度リダイレクトされます。ユーザーが同じ資格情報で再度ログインしようとすると、認証に失敗します。

ローカル デバッグでは、デバッグを開始および停止するたびに、これにより問題が「クリア」され、ユーザーはもう一度しか認証できなくなります。サーバーでもこれを試しましたが、同じ結果が得られました。また、最初の認証試行が失敗した場合 (不正なパスワード)、ユーザーは次の試行で適切なパスワードを使用してもログインできません。

Login コントロール メソッドをカスタマイズしたりオーバーライドしたりしていません (login.authenticate で members.validateuser を試してみたところ、同じ問題に遭遇しました)。

MySQLMembershipProvider のバージョン 6.2.3.0 を使用しています (ハッシュ化されたパスワードと MySqlMembershipProvider に関するいくつかの問題について読んだことがありますが、SHA1 を追加しても問題には影響せず、ユーザーは一度認証できます - MySQL フォーム認証のハッシュ化されたパスワードの問題)。

何が起こっているのかをデバッグするためのヒントはありますか?

これが私のweb.configのサンプルです(AutoGenerateマシンキーも使用しましたが、問題は残っています):

    <membership defaultProvider="MySqlMembershipProvider" userIsOnlineTimeWindow="15">
        <providers>
            <clear/>
            <add name="MySqlMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" 
         connectionStringName="MySqlMembershipConnection" 
         applicationName="myapp" 
         enablePasswordRetrieval="false" 
         enablePasswordReset="true" 
         requiresQuestionAndAnswer="false" 
         requiresUniqueEmail="true" 
         passwordFormat="Hashed" 
         maxInvalidPasswordAttempts="5" 
         minRequiredPasswordLength="8" 
         minRequiredNonalphanumericCharacters="2"/>
        </providers>
    </membership>
    <machineKey validationKey="AD45EA85C19163E399E0ACEBC5523A9C740EFFF42154518FCDFA349E415DF51894C2CA25ABF8CF419C9F206DBE4878118D8BE8CF4DAA2E9708E7296B288ED980" 
            decryptionKey="C1ECCEF762BABCC02A44CD50571C2C3EDF6E7E4F7208886ACE157EF22AFCA27A" 
            validation="SHA1" decryption="AES"/>
4

1 に答える 1

0

データベース スキーマに問題があることがわかりました。mysql コネクタ v 6.5.5.0 に更新し、パーサーが mysqlroleprovider に関するエラーをスローしました。「欠落または不正なスキーマ」です。スキーマを自動生成させ、新しいスキーマが作成されました (今回はテーブル名に大文字がありません)解決されるようです。

于 2013-03-18T18:59:22.397 に答える