2016-03-31 6 views
1

私はVS 2013を使用しており、MVC Webアプリケーションで作業しています。 Windows認証を使用します。特定のADグループのユーザーをチェックする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; 

ただし、このメソッドは、拡張メソッドではないため、ビューから使用できません。

私がしたいのは、ユーザーがグループ内にいるかどうかを確認して、そのグループに属していない場合は特定のリンクを非表示にすることです。

提案がありますか?

答えて

1

なぜ、あなたのモデルにプロパティを持っていない:コントローラで

public bool IsAuthorized { get; set; } 

を、モデルを返す前に、あなたのアクションメソッドでプロパティを設定します。

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 
} 
関連する問題