2014-09-25 74 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 
}