有没有人遇到MVC无法识别Windows角色的事件?我认为角色转换为Windows中的组,但出于某种原因,当我将用户添加到组时,如果user.IsInRole(“GroupJustAddedTo”)始终返回false,请检入MVC(使用Windows身份验证)。我不知道为什么......在带有Windows身份验证的Server 2003 R2中工作。困惑:〜(???
答案 0 :(得分:1)
在不知道其他任何事情的情况下,它让我想知道您的MVC是否真的没有连接到您的AD服务器。也许,获取组的用户可能没有足够的权限?只是一些初步的想法。
编辑
我们最终编写了自己的RoleProvider。这是重载的GetRolesForUser代码
public override string[] GetRolesForUser(string userName)
{
List<string> allRoles = new List<string>();
PrincipalContext context;
context = new PrincipalContext(ContextType.Domain, "hlpusd.k12.ca.us", "DC=hlpusd,DC=k12,DC=ca,DC=us");
UserPrincipal user = UserPrincipal.FindByIdentity(context, userName);
PrincipalSearchResult<Principal> usergroups = user.GetGroups(); // list of AD groups the user is member of
IEnumerator<Principal> eGroup = usergroups.GetEnumerator();
while (eGroup.MoveNext())
{
allRoles.Add(eGroup.Current.Name);
}
return allRoles.ToArray();
}