0

「SomeController」というコントローラーがあります。ユーザーがログインしているかどうか、またはそのコントローラーでアクションを実行する権限があるかどうかを確認したい。そのために、私はその記事http://blog.wekeroad.com/blog/aspnet-mvc-securing-your-controller-actions/を読み、独自のクラス (テスト) を作成しました。

public class BaseFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            FormsAuthentication.RedirectToLoginPage();
        }
        //here will be checking the user permissions if he's logged in
    }
}

[BaseFilter]
public class SomeController : BaseController
{
 ...
}

しかし、あなたが理解できるように、そのコントローラーからアクションを実行したいときは無限ループになります。それで、それに対処する方法は?

4

1 に答える 1

1

クラス レベルではなく、関連するメソッドにアクション フィルターを適用できます。

個人的には、これに次のような名前を付けAuthorizeて、承認が必要なコントローラー メソッドに適用します。

[Authorize]
public ActionResult Index()
{
// Do stuff
}
于 2010-12-19T17:20:30.323 に答える