我正在使用VS 2013并致力于MVC Web应用程序。它使用Windows身份验证。我写了一个bool方法来检查特定AD组中的用户。
string user = User.Identity.Name;
PrincipalContext context = new PrincipalContext(ContextType.Domain, "DOMAINNAME");
if(user.IsMemberOf(ctx, IdentityType.SamAccountName, "GroupName")){
return true;
}
else
return false;
但是,我无法在我的View中使用此方法,因为它不是扩展方法。
我想要做的是,检查用户是否在群组中,然后在他/她不在该群组中时隐藏特定链接。
有什么建议吗?
答案 0 :(得分:1)
为什么模型中没有属性:
public bool IsAuthorized { get; set; }
在控制器中,在返回模型之前在action方法中设置属性:
YourModel model = ...
string user = User.Identity.Name;
PrincipalContext context = new PrincipalContext(ContextType.Domain, "DOMAINNAME");
model.IsAuthorized = user.IsMemberOf(ctx, IdentityType.SamAccountName, "GroupName");
return View(model);
然后在视图中,如果链接未经授权,只需隐藏链接
@if (model.IsAuthorized)
{
@Html.Action(...) // or whatever your link is
}