14

いくつかの調査 aspx ページを含むフォルダーがあります。これらの aspx ページにアクセス許可を設定する必要があります。5 つの異なるページがあり、特定のユーザーがアクセスできるのは 1 つだけです。ユーザーを許可および拒否するための web.config ファイルを追加しましたが、機能していません。ユーザー名を許可してアクセス権を追加するdeny="?"と、アクセス権がありませんが、別のユーザーを追加すると、自分のユーザーを削除し、拒否オプションを削除して、システムにログオンする許可を取得します。拒否するとアクセスできますが、すべてのユーザーがページにアクセスできます。

ユーザー資格情報を追加し、アクセスできないすべての匿名ユーザーを拒否します。誰かが私が間違っていることの正しい方向に私を向けることができますか? Windows ログオン資格情報を読み取ったり取得したりしていない可能性がありますか? Visual Studio 2012、エンティティ フレームワークを使用しています。

これは私がやったことです:

   //Web Config that allows and denies:
   <?xml version="1.0"?>
        <configuration>
        <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
     </system.web>

    <location path="QualityCheckSurvey.aspx">
    <system.web>
      <authorization>
        <allow users="DomainName\User2" />
        <deny users="?" /> 
      </authorization>
    </system.web>
    </location>
    </configuration>

認証モードを Windows に設定しました。

編集権限が正しく設定されていないようです。しかし、それはまだ機能していません。* を拒否して USER1 を許可すると、ログイン要求が表示されても、ユーザーはアクセスできません。使用者がアクセス権を持っていても、ログイン ウィンドウ ダイアログ ボックスが 3 回ポップアップし続けます。否定させる?(匿名)拒否を取り、USER1の許可タグしか持っていなくても、誰もがアクセスできるようにします...残りのユーザーはまだアクセスできます...私は現在ローカルで実行していますが、設定時にIISでもそこでの認証(Windowsおよび基本認証)はまったく同じことを行います....

編集これは私が使用している実際のコードです。このパス "" では 3 人のユーザーのみが許可されています。この web.config ファイルは、5 つの異なる種類の調査を含む調査フォルダー内にあります。この 1 つのアンケートのみを特定のユーザーに許可し、残りのアンケートには誰でもアクセスできるようにする必要があります....

     <?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>

  <location path="QualityCheckSurvey.aspx">
    <system.web>

      <authorization>
        <deny users="?" />
        <allow users="OEP\kevinh, OEP\shabierg, OEP\heilened" />
        <deny users="*" />
      </authorization>

    </system.web>
  </location> 

アプリケーションのルートにあるメインの web.cofin で、認証モードを Windows に設定しました。

     <authentication mode="Windows">

<!--<forms loginUrl="~/Account/Login.aspx" timeout="2880" />-->
    </authentication>
4

3 に答える 3

17

あなたの質問では、フォルダー名があると言いましたが、web.config では、パスにファイル名のみを指定しました。以下のように、foldername/filename.aspx を使用します。deny users="?' の代わりに deny users="*" を使用します。

<location path="foldername/QualityCheckSurvey.aspx">
    <system.web>
        <authorization>
            <allow users="DomainName\User2"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

編集

これは、同じアプリケーションに複数の web.config ファイルがあるようです。混乱を避けるために、調査フォルダーにあるものを削除し、ルートフォルダー web.config にこのコードを追加してください。

 <?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <authentication mode="Windows" />
    </authorization>
  </system.web>

  <location path="survey/QualityCheckSurvey.aspx">
    <system.web>
      <authorization>
        <allow users="OEP\kevinh, OEP\shabierg, OEP\heilened" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location> 

調査フォルダーはルートフォルダー内にあると想定しています。

于 2013-08-15T17:30:39.207 に答える