7

フォーム認証を実現するために、匿名コントローラーを作成しようとしています。匿名およびフォーム認証を有効にして IIS 7 を構成し、匿名ユーザーを拒否するように web.config を設定しました。ログイン コントローラーでは、コントローラー (およびアクション) に [AllowAnonymous] 装飾を配置しました。

この一連の構成で取得できる唯一のアクションは、ログイン アクション (「ログイン」ビューを返す) です。Web でログイン URL として設定しているため、MVC でこのアクションを取得できると推測しています。 .config.

これが私のWeb構成構成です:

     <authentication mode="Forms">
        <forms loginUrl="~/Login/Login" timeout="2880" />
     </authentication>

他のすべてのアクションは login アクションにリダイレクトされます。この構成セットでは、パスワードの復元、登録などの他の重要なアクションを実行できません。

私は何を間違っていますか?

4

5 に答える 5

15

web.config での承認構成の代わりに、カスタム動作でグローバル認証フィルターを使用します (MVC に最適)。

グローバル フィルタを追加

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

次に、[AllowAnonymous] が機能し、他のすべてのコントローラーとアクションには承認が必要です。

于 2013-05-05T09:12:30.930 に答える
12

メソッド Authorizeにフィルターを登録することもできます。RegisterGlobalFilters

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

そして、AllowAnonymous匿名アクセスを必要とするアクション メソッドで属性を使用します。

[Authorize]
public class AccountController : Controller
{
    [AllowAnonymous]
    public ActionResult RecoverPassword()
    {
     ...
    }
}
于 2013-05-05T09:14:43.107 に答える
1

考えられるアプローチは 2 つあります。

まず、Authorize 属性を使用して匿名リクエストをグローバルに拒否し、AllowAnonymous 属性 (MVC4 の新機能) を使用して承認を必要としないいくつかのリクエストをマークできます。

2 番目 - グローバルに拒否するのではなく、選択したコントローラー/アクションを Authorize 属性で保護します。

于 2013-05-05T09:13:31.323 に答える