2012-02-11 80 views
3

我寫這個webapp並希望通過混合條件來授權控制器。例如:混合授權註釋

我想允許存取權限,如果用戶在角色「管理員」或它的用戶名是「programad」,像這樣:

[Authorize(Roles = "Administrator", Users = "programad")] 

我想要的,因爲當我第一次註冊自己的應用程序(用於測試,開發過程等)我不是管理員。我想通過我的用戶名獲得第一個訪問權限,以便我可以將自己置於管理員角色。

我把它放在控制器級別上,但似乎沒有工作,它要求我再次登錄,即使輸入我的憑據,它也會拒絕我訪問。

如何通過我的用戶名和/或我的角色來授權?

+0

這是更好的解決方案。只需註冊代碼就可以統計註冊用戶的數量。如果該號碼爲0,則第一個註冊用戶將自動分配管理員角色。 – 2012-02-12 05:01:51

回答

2

這是因爲AuthorizeAttribute表示用戶必須處於「管理員」角色並命名爲「programad」。最簡單的解決方法是創建另一個角色,將用戶「programad」中,然後更改AuthorizeAttribute到

[Authorize(Roles = "Administrator, NewRole")]

其中NewRole是無論你的名字包含用戶「programad」的新角色。

如果您確實需要將AuthorizeAttribute更改爲與角色OR用戶行爲一致,則需要創建一個派生自AuthorizeAttribute的新類並覆蓋填充授權邏輯的AuthorizeCore方法。