2012-07-27 65 views
0

在实施ASP.NET授权时,我应该在哪里放置AuthorizeAttribute实现的类?在ASP.Net身份验证中放置AuthorizeAttribute扩展类的位置?

在我的项目中,我创建了一个名为BasicHttpAuthorizedAttribute的类,它实现了System.Web.Http.AuthorizeAttribute类,我重写了我想要的方法。

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

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

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

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

+1

因为你已经把它注册为一个过滤器,它会被称为无关。 – 2012-07-27 08:09:59

+0

@steen是的,那么我应该如何添加它? – thilok 2012-07-27 08:11:43

+0

看看这个时髦的文章,它解释了使用和一些提示和技巧:http://blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc- 3-application.aspx – 2012-07-27 08:13:33

回答

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) 
+0

@steen先生,谢谢,这帮了很多。 – thilok 2012-07-27 09:51:44

+0

太棒了,不客气。 – 2012-07-27 09:52:17