2014-09-25 219 views
0

我正在爲我的公司開發一個Intranet站點,並且正在使用Windows身份驗證。我的問題是,當我嘗試添加一個由空格分隔的兩個單詞的角色時,我得到Windows安全模式彈出窗口詢問我的用戶名和密碼。但是,如果角色只有一個單詞,那麼它可以很好地工作。Windows身份驗證MVC [Authoize(角色=「兩個字」)]不工作

活動目錄中的示例組名稱:「人力資源」,「項目經理」,「教育」爲我的例子下面。

實例的作品:

[Authorize(Roles = "Education")] 

例子不工作:

[Authorize(Roles = "Human Resources")] 
[Authorize(Roles = "Project Managers")] 

我曾嘗試:

[Authorize(Roles = "Human Resources")] 
[Authorize(Roles = "Human_Resources")] 
[Authorize(Roles = "HumanResources")] 
[Authorize(Roles = @"DOMAIN\Human Resources")] 
[Authorize(Roles = @"DOMAIN\HumanResources")] 
[Authorize(Roles = @"DOMAIN\Human_Resources")] 

除了進入Active Directory和改變我的用戶羣不包括空格,有什麼我可以做的嗎?

回答

0

我學到了兩件事。如果您將自己添加到組中,則必須註銷並重新登錄到域帳戶。 Windows Auth正在查看我所屬角色的緩存版本。Domain Admins是一個不允許在代碼中使用[Authorize(Roles =「Domain Admins」)]的組。

1

這裏有一些想法,以解決這一問題:

  1. 無需重啓只是否認自己通過web.config中訪問例如 <deny users="*" />重新打開瀏覽器以獲取401,刪除拒絕語句並重新啓動瀏覽器並刷新角色緩存。 也:
  2. 檢查,並仔細檢查,並再次檢查「角色名」是正確的
  3. 前綴域\角色=「域\角色」
  4. ,空間,做工精細的角色使用時:

c#

public static class AppRoles 
{ 
    public const string Manager  = @"domain\App Manager"; 
    public const string Admin  = @"domain\App Admin"; 
} 

[Authorize(Roles = AppRoles.Admin)] 
public class MyAbcController : Controller 
{ 
    //code 
}