2009-08-07 142 views
1

我很努力選擇用於我的.Net應用程序的身份驗證和授權的內容。我在C#中使用ASP.Net MVC。在Java中,我發現Spring Acegi Securiyy非常容易並且很好實現以保護URL,隱藏菜單和按鈕,甚至保護我的方法。.Net中的身份驗證和授權

此外,我會使用Windows Active Directory存儲用戶配置文件。

什麼是可用的.Net世界是類似於Spring Acegi。反正這裏是我想要的東西 -

  1. XML類型的配置,以確保基於角色的URL,即只有管理員角色可以訪問/管理/ *頁等
  2. 在UI我想隱藏基於菜單和按鈕就像if(角色是Admin)showButton一樣。
  3. 雖然上面的東西已經足夠,但我想確保我的業務層。因爲我也暴露了一個web服務。

我知道我可以寫一個custome,但爲什麼要重新發明輪子,如果一些.net庫可用。

回答

1
  1. XML配置?不,沒有基礎的MVC的東西。使用WebForms,你可以爭辯說web.config中的規則是基於XML的,但它們不適用於ASP.NET MVC - 不要在web.config中使用path/location。授權由控制器類上的屬性控制。但有人寫了XML authorization module這可能是合適的
  2. 在UI中,你可以在視圖中做到這一點,如果你願意。您可以隱藏基於認證未認證相比,像這樣

    嗨身份驗證的用戶

    ,您還可以使用Request.User對象更加具體

    喜超級用戶

  3. 可以保護網絡服務與用戶名和密碼,但是如果你想從Web站點流向Web服務,因爲網站調用更棘手。這裏有很多關於WCF認證和授權的問題和解答。

0

這是真的.net有非常強大的引擎。 您需要查看RoleProvider和MembershipProvider的現有實現或創建您自己的。 在web.config中,您需要指定要使用哪個提供程序並且最少指定文件夾受角色保護。 對於實現你只需要提供laverage業務邏輯層安全的任何地方 Membership.GetUser,Roles.IsUserInRole,...

-1

這不是一個真正的答案,但IMVHO,考慮實現您的自定義邏輯。確實,在這種情況下,車輪已經被髮明出來,但是我發現自己在使用Asp.NET認證和授權時大部分時間都在掙扎。你可以快速啓動並運行,如果你有一個簡單的場景,這很好。當你想超越這個範圍時,你最初獲得的所有時間都會有風險。但正如我之前所說,只是我的看法。

+0

也許你可以分享一些你已經發現默認的ASP.NET認證和授權機制不足的場景的一些細節? – mookid8000 2009-08-07 10:51:53

+0

不是說它不夠。只是說,當我想要做更復雜(髒)的事情時,我花在實現自定義方法上的時間少於花在Asp.NET方法上的時間。正如我之前所說,這是IMVHO。 – ccalboni 2009-08-26 10:20:39