在ASP.Net MVC(4或5)中,是否可以添加自定义授权事件而无需自定义授权属性?

时间:2014-07-21 20:26:30

标签: asp.net-mvc authorization

我想为进程添加一个自定义步骤,当请求遇到[Authorize]属性时会发生这种情况。我宁愿不使用自定义版本的authorize属性重新编写我的所有操作。

我希望有类似的东西:

Global.OnAuthorize += () => { /*do stuff*/ };

2 个答案:

答案 0 :(得分:2)

如果您使用的是FormsAuthentication,则可能需要向Global.asax添加一个名为FormsAuthentication_OnAuthenticate的方法,该方法用作FormAuthentication EventHandler

  

为Forms定义FormsAuthenticationEventHandler委托   验证FormsAuthenticationModule类的事件。您可以   访问FormsAuthenticationModule类的Authenticate事件   通过在中指定名为FormsAuthentication_OnAuthenticate的子例程   ASP.NET应用程序的Global.asax文件。认证   在AuthenticateRequest事件期间引发事件。

在AuthenticateRequest期间引发AuthenticateEvent

  

AuthenticateRequest事件表示已配置   身份验证机制已验证当前请求。   订阅AuthenticateRequest事件可确保请求   将在处理附加的模块或事件之前进行身份验证   处理

public void FormsAuthentication_OnAuthenticate(
            Object sender, FormsAuthenticationEventArgs e)
    {

    }

希望这会有所帮助:)

答案 1 :(得分:1)

  

我宁愿不使用自定义版本的authorize属性重新制作我的所有操作。

您可以全局应用自定义授权属性。

GlobalFilters.Filters.Add(new MyCustomAuthorizationAttribute());

之后,您可以使用 AllowAnonymous 属性来装饰您想要未经授权使用的操作或控制器。