2016-09-06 90 views
1

我正在使用MVC5,並希望有一個很好的小類,就像這裏提出的問題 - 一個允許通過角色授權的多個角色的屬性。定義是這樣的:自定義AuthorizeAttribute工作不正常

public class AuthorizeRolesAttribute : AuthorizeAttribute 
    { 
     public AuthorizeRolesAttribute(params string[] roles) 
     { 
      Roles = string.Join(",", roles); 
     } 
    } 

用法是(例如)這樣的:

[AuthorizeRoles("Admin", "SuperAdmin")] 
    public ActionResult CompanyContacts() 
    { 
     return View(); 
    } 

此外,在web.config中我加了下一行:

<system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 
</system.webServer> 

它仍然允許用戶訪問該方法。它甚至完全忽略了構造函數。默認屬性工作得很好。好像我錯過了一些東西。有什麼建議?

謝謝!

+0

你註冊屬性的屬性?並且你在屬性中提供了onActionExecuting方法的實現? –

+0

不是。原因是 - 我只是希望默認屬性能夠接受多個角色,而不是像單個字符串,而是像參數。授權的所有其他行爲對我都有好處。 – Pritorian

回答

0

您的代碼工作正常,如果您更改了用戶角色,則必須註銷並再次登錄,因爲舊憑證將保持有效,直至登錄會話結束。

+0

好吧,沒有。我不會在飛行中改變角色。一個簡單的用戶登錄,並試圖通過地址訪問「管理員」方法。事情是,構造函數根本不被調用。 MB是這個原因的一部分。 – Pritorian

+0

你可以發送一個示例項目嗎?因爲這裏不可能重現相同的情況! – Ziyad