4

別の Web サイト内に仮想アプリケーションとして設定された管理サイトがあります。

サブ ディレクトリ (仮想アプリケーション) への訪問者に、メインの親サイトで設定されたものと同じフォーム認証を使用して資格情報の入力を求められるようにしたいと考えています。

あらゆる種類のことを試しましたが、機能させることができません。

<authentication mode="Forms">すべての 、<authorization><membership>および<roles>セクションを仮想アプリの web.config から削除する

<authentication mode="Forms">同じ、<authorization><membership>および<roles>セクションを親から仮想アプリ web.config にコピーする

仮想アプリケーションの代わりに仮想ディレクトリを使用する

しかし、資格情報の入力を求められることはありません

このセットアップを取得する方法を知っている人はいますか?

ありがとう

アップデート:

IIS でアプリケーション名を削除して (仮想アプリケーションではなく仮想ディレクトリにするため)、親からアクセス許可を継承できるようになりました。

ただし、これにより管理サイトのすべてのパスが台無しになります

たとえば、次のエラーが表示されます

ファイル '/Site.master' が存在しません。

では、仮想ディレクトリ (親から認証を継承しているように見える) を使用する必要がありますか?

または、仮想アプリケーション (現在、親から認証を継承していませんが、正しい相対パスを持っています)?

これが親構成です

<membership defaultProvider="SqlServerMembershipProvider">
            <providers>
                <add connectionStringName="xxxxxxxx" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" name="SqlServerMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            </providers>
        </membership>
        <roleManager enabled="true" defaultProvider="SqlServerRoleProvider">
            <providers>
                <add connectionStringName="xxxxxxx" applicationName="/" name="SqlServerRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            </providers>
        </roleManager>

        <authentication mode="Forms">
            <forms name=".EPiServerLogin" loginUrl="login.aspx" timeout="120"/>
        </authentication>
        <authorization>
            <deny users="?"/>
        </authorization>
4

3 に答える 3

2

こちらで説明されているように、シングル サインオン ソリューションを使用する必要がありました

http://www.codeproject.com/KB/aspnet/SingleSignon.aspx

要点は、各サイトが Cookie 値に同じ暗号化キーを使用する必要があることです。そのため、シングル サインオンに関係する各サイトにこの machineKey 要素を追加する必要があります。

于 2010-03-16T17:21:13.993 に答える
1

どのように認証を設定しましたか?

また、親サイトでまだ認証されていないと思いますか?

admin サブディレクトリには、web.config に次のような内容が含まれている必要があります (明らかに、そこにはさらに多くの情報が含まれている可能性があります)。

<configuration>
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</configuration>

これにより、すべての匿名ユーザーが拒否されますが、すべての認証済みユーザーのアクセスが許可されます。ロール プロバイダーを使用して特定のロールのみを許可している場合は、これを簡単に拡張できます。

      <allow roles="Admin" />
      <deny users="*" />

デフォルトの動作はすべてのユーザーを許可するため、そこに「すべてのユーザーを拒否する」が必要であることに注意してください。承認はリストの先頭から開始するという点で「トップダウン」で機能し、一致が見つかるとすぐに処理を停止するため、ユーザーが「管理者」ロールにある場合、「拒否」に到達しません。すべてのユーザー」ルール。

<location>要素を使用して、ルート web.config でこれを構成することもできます。

コメントへの対応

そして、あなたの認証/承認はすべて親サイトで機能しますか?

質問を編集して、あなたが試した (サニタイズされた) web.config セクションを含めていただけますか<roleManager enabled="true">?デフォルトはfalse)。

于 2010-03-15T13:34:58.447 に答える
0

私たちはあなたがやろうとしていることをここで頻繁に行います。

ルート レベルは仮想アプリケーションであり、マスターの web.config と global.ascx が含まれています。その中に「Admin」という通常のフォルダがあります。その中に小さな web.config があり、<authorization>XML 情報のみが含まれています。ルートまたは管理フォルダのいずれかの場所にログイン ページが必要です。

あなたの投稿で、3 つのアプリケーション/ディレクトリ (アプリ、親アプリ、アプリの管理者) が関係しているのか、それとも 2 つだけ (アプリとその管理者) が関係しているのかについて少し混乱しました。ここでは、2 であるという批判的な仮定をしています。3 つある場合は、この作業を進めるのにさらに多くの作業が必要になります。

代替テキスト

于 2010-03-16T17:38:27.337 に答える