如何隐藏不属于AD Group的用户的链接

时间:2016-03-31 08:50:57

标签: c# asp.net-mvc authentication active-directory-group

我正在使用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中使用此方法,因为它不是扩展方法。

我想要做的是,检查用户是否在群组中,然后在他/她不在该群组中时隐藏特定链接。

有什么建议吗?

1 个答案:

答案 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
}