2012-02-02 64 views
0

我有一個使用Membership for auth/auth的Web應用程序(MVC),其中用戶可以擁有多個Role和具有不同角色的多個國家/地區。對當前角色進行成員資格檢查

比方說,user1是美國的Admin和Editor,只有Editor在墨西哥。當用戶登錄系統時,系統會提示他選擇(國家和角色)。

AdminController has [Authorize(Rol =「Admin」)]]屬性。

在這種情況下,如果用戶在美國作爲編輯者登錄,則AdminContoller中的操作必須是forbbiden。

哪種「更好」的方法來檢查用戶當前登錄的角色?

+0

也許你可以重寫Authorize屬性。 [授權(Rol =「Admin /墨西哥」)]成爲Admin&Mexico。 – 2012-02-02 20:32:06

回答

0

您可以創建自定義屬性授權:

public class CustomAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     // Code here checks that user is Admin for currently selected Country 
    } 
} 

,然後用你的屬性,像這樣:

[CustomAuthorizeAttribute (Roles="Admin")] 

This article更爲詳細地介紹的主題。