在ASP.Net身份验证中放置AuthorizeAttribute扩展类的位置?

时间:2012-07-27 08:05:39

标签: asp.net asp.net-mvc-3 authentication authorization

在实施ASP.NET授权时,我应该在哪里放置AuthorizeAttribute实现的类?

在我的项目中,我创建了一个名为BasicHttpAuthorizedAttribute的类,它实现了System.Web.Http.AuthorizeAttribute类,并且我已经覆盖了我想要的方法。

我已将此BasicHttpAuthorizedAttribute类注册为过滤器。

我的问题是即使我没有在控制器方法之上提及[Authorized]属性,也会调用BasicHttpAuthorizedAttribute类的OnAuthorization()方法。

那不应该那样,对吗?只有在控制器方法之上提到[Authorized]属性时才应该调用它。我是对的吗?

我在这里做错了什么? (我的项目是一个ASP.Net web api项目,我正在使用System.Web.Http.AuthorizeAttribute类)

1 个答案:

答案 0 :(得分:1)

基本上,它每次都会进入OnAuthorization()事件,因为您已将其注册为过滤器。

本文有一些关于一揽子过滤和匿名例外的简明诀窍和旅行,我认为,这就是你想要的。它可能适用于MVC,但所使用的技术应该适用于大多数ASP.NET类型,只需稍加调整即可。

  

http://blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc-3-application.aspx

文章示例:

[HttpPost]
[AllowAnonymous]
public ActionResult LogOn(LogOnModel model, string returnUrl)