0

ASP.NET Authorization を使用して、ユーザーがログインする前に自分のサイトへのアクセスを拒否していますが、これにより Register.cshtml ページもブロックされています。このページの通過を許可する権限をどのように整理すればよいですか?

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

  <location path="Content">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

  <location path="Register.cshtml">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
4

2 に答える 2

7

IMHO、アプリケーションの認証を制御するために web.config を使用しないでください。代わりにAuthorize属性を使用してください。

メソッドGlobal.asaxの下のファイルにこれを追加しますRegisterGlobalFilters

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new AuthorizeAttribute());
    }

または、コントローラーも飾ることができます[Authorize]

[Authorize]
public class HomeController : Controller
{
    ...
}

匿名アクセスが必要なアクションにはAllowAnonymous属性を使用

   [AllowAnonymous]
   public ActionResult Register() {
      // This action can be accessed by unauthorized users
      return View("Register");   
   }

参照に従って、

MVC アプリケーションを保護するためにルーティングまたは web.config ファイルを使用することはできません。MVC アプリケーションを保護するためにサポートされている唯一の方法は、Authorize 属性を各コントローラーに適用し、ログインおよび登録アクションで新しい AllowAnonymous 属性を使用することです。現在の領域に基づいてセキュリティの決定を下すことは非常に悪いことであり、アプリケーションを脆弱性にさらすことになります.

于 2013-07-10T10:57:53.780 に答える
0

これは、使用してアプリケーションから全員を拒否しているために発生しています

<authorization>
      <deny users="?" />
    </authorization>

上記のコードは、フォルダーに与えられたすべての権限を上書きします

ユーザーのフォルダごとに拒否し、登録/ログイン/ヘルプ/連絡先ページをルート レベルに保持することをお勧めします。

于 2013-07-10T10:24:01.173 に答える