检测Application_AuthenticateRequest期间在控制器操作上设置的属性

时间:2013-10-24 12:32:11

标签: asp.net asp.net-mvc-4 authentication

我接到Application_AuthenticateRequest的电话,我用它来执行一些认证逻辑。类似于:

    protected void Application_AuthenticateRequest(Object sender, EventArgs e)
    {
        if (System.Web.HttpContext.Current.Request.IsAuthenticated)
        {
            ....
        }
    }

这通常很好,但在某些情况下我的控制器操作附加了AllowAnonymous属性,我不希望代码执行。如果用户未登录,则没有问题,但是,如果用户已登录并且他们尝试访问其中一个视图,则会遇到问题。

我想知道的是,如果有办法我可以在Application_AuthenticateRequest电话中检测到我的操作设置了哪些属性。或者,如果我甚至可以检测当前页面是否需要验证?

到目前为止,我还没有弄清楚这一点,但似乎它应该相当简单。我想知道是否有人可以指出我缺少的东西?

1 个答案:

答案 0 :(得分:1)

这个问题有点老了。但我找到了答案。我使用System.Web.HttpContext.Current.SkipAuthorization

找到了解决方案

如果操作具有[AllowAnonymous]属性,则返回true, 否则,如果操作具有[Authorize]属性,则返回false。