2012-07-27 76 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