9

統合セキュリティを使用するASP.NetMVCアプリがあり、特定のルートへのオープンアクセスを許可する必要があります。問題のルートはです~/Agreements/Upload。私はいくつかのことを試しましたが、これまでのところ何も機能していません。

<configuration> 
  <location path="~/Agreements/Upload">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
</configuration> 

IISの[ディレクトリセキュリティ]>[認証方法]で、[統合Windows認証]のみを選択しています。さて、これは私の問題の一部である可能性があります(IISが上記のIISを許可している場合でも)。しかし、その場合、統合セキュリティが機能するように構成し、認証されていないユーザーが特定のルートにアクセスできるようにするにはどうすればよいですか?

4

2 に答える 2

16

ASP.NET MVC では、web.config で location 要素を使用しないでください。Web フォーム エンジンはディスク上の物理ファイルにマッピングされていましたが、MVC エンジンはルーティングを使用していました。これは、誤ってカスタム ルートを介して「保護されたコントローラー」へのアクセスを誤って許可してしまう可能性があることを意味します。

ASP.NET MVC アプリケーションを保護するための推奨される方法は、次の例に示すように、Authorize 属性を使用することです。

public class HomeController : Controller
{
    [Authorize]
    public ActionResult Index()
    { 
        return View();
    }
}

保護したいのはコントローラ アクションであり、ルートではありません。ASP.NET MVC のセキュリティ担当者である Levi Broderick は、この問題について次のように述べています。

  1. ASP.NET MVC 2 で承認からアクションを除外する
  2. IIS および MVC での承認に関する問題
于 2011-03-30T17:20:56.013 に答える
-1

IIS でも匿名アクセスを許可する必要があります。そうしないと、Windows 認証されたユーザーだけがサイトのどこにでもアクセスできるようになります。デフォルトでは、匿名ユーザーへのアクセスを拒否する必要があります。

<deny users="?"/>
<allow users="*"/>

<location>セクションで、匿名ユーザーを許可します。

<allow users="?"/>
于 2010-03-31T05:30:11.767 に答える