0

ASP.NET MVC4 と SQL Azure を使用して Web アプリケーションを作成しています。フォーム認証とメンバーシップ ライブラリを使用しています。運用環境では、Web サイトは Azure の Web ロール サービスから実行されます。

開発環境から新しいユーザーを登録すると、本番環境からのログインが失敗し、その逆も同様です。同じ環境で作成したユーザーとパスワードでのログインは成功します。開発と本番では異なる構成のように聞こえますが、両方が同じ DB で動作することを確認し、両方のソース (開発と本番) からのユーザーの詳細が同じテーブル ('users' と 'メンバーシップ」)。

これは CreateUser コマンドです。

MembershipUser user = Membership.CreateUser(model.Email, model.Password, model.Email, null, null, true, null, out createStatus);

そして、これは失敗するログイン コマンドです。

if (Membership.ValidateUser(model.Email, model.Password))

ありがとう。

4

2 に答える 2

1

「applicationName」は構成ファイルで同じですか?

以下に示すように: applicationName="MyApplication"

   <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
      <providers>
        <clear />
        <add 
          name="SqlProvider" 
          type="System.Web.Security.SqlMembershipProvider" 
          connectionStringName="MySqlConnection"
          applicationName="MyApplication"
          enablePasswordRetrieval="false"
          enablePasswordReset="true"
          requiresQuestionAndAnswer="true"
          requiresUniqueEmail="true"
          passwordFormat="Hashed" />
      </providers>
    </membership>

それについて行く別の方法。テーブルをクエリして、さまざまな環境を通過するときに ApplicationId が「並んでいる」ことを確認します。

select [ApplicationId]  , [UserId] , [Email] from [dbo].[aspnet_Membership] where  [Email] = 'bill.gates@hotmail.com'
于 2013-05-03T14:35:03.733 に答える
1

ほとんどの場合、dev と production は異なる MachineKey を持っています。MachineKey はハッシュの生成に使用されるため、別のキーはパスワードが機能しないことを意味します。

両方で明示的に web.config に MachineKey を設定します。

http://msdn.microsoft.com/en-us/library/ff649308.aspx#paght000007_webfarmdeploymentconsiderations

于 2013-05-03T14:35:42.300 に答える