2

ASP.NET MVC 4に組み込まれている認証と承認を活用するために、カスタムメンバーシップとロールプロバイダーを作成しました。アプリケーションの開発中は、テスト環境に展開するまで、すべてが順調に進んでいました。

Visual Studioからデバッグモードでアプリケーションを起動すると、完全に正常に機能します。ただし、次にVisual Studioのワンクリック展開を使用して、開発マシンで実行されているIISのインスタンスにアプリケーションをロードします。ブラウザにアプリケーションをロードできますが、認証が機能しなくなりました。Fiddlerを使用すると、Cookieが返送されていることがわかりますが、[Authorize]属性を使用して制限されているサイトの部分にアクセスできません。

以下は私のweb.configからの関連スニペットです。

<membership defaultProvider="PonosMembershipProvider">
  <providers>
    <clear />
    <add name="PonosMembershipProvider" type="Ponos.Identity.PonosMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/Ponos" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
  <providers>
    <clear />
    <add name="DefaultRoleProvider" type="Ponos.Identity.PonosRoleProvider" connectionStringName="DefaultConnection" applicationName="/Ponos" />
  </providers>
</roleManager>

さらに、次のようにロジックを使用して両方のカスタムプロバイダーでアプリケーション名を設定します。

public override string ApplicationName
    {
        get
        {
            return "Ponos";
        }
        set
        {
            throw new NotImplementedException();
        }
    }

さらに、IISの実行中のインスタンスに接続した後、フォームに入力された情報は検証に合格しましたが、許可されたアクセスが制限されているページへのアクセスは許可されていません。

また、デプロイメントに使用されているデータベースには、開発データベースと同じ値が入力されます。

プロバイダーがデバッグ環境で正常に機能しているのに、展開後にプロバイダーが機能しないのはなぜですか?

4

2 に答える 2

0

この問題は、デプロイされたサーバーがそのIPによって直接アクセスされた場合にのみ発生していました。ドメインをIPにマッピングするホストエントリを追加し、続いて認証Cookieに同じドメインを設定すると、問題は解決しました。

ドメインがIPアドレスの場合にCookieにアクセスできなかった理由はわかりませんが、これで問題は解決しました。

于 2012-03-09T15:51:23.603 に答える
0

「フォームに入力された情報は検証に合格していますが、許可されたアクセスが制限されているページへのアクセスは許可されていません。」

権限の問題のようです!

于 2012-02-21T10:33:17.840 に答える