web-dev-qa-db-ja.com

ASP.NETMVC5の特定の役割からのリンクの非表示

したがって、これはばかげた質問に聞こえるかもしれませんが、管理者ユーザーのみにリンクを表示するにはどうすればよいですか?

通常のユーザーに次のリンクが表示されているとします。
ホーム/概要/お問い合わせ

また、管理者ユーザーには次のリンクが表示されます。
ホーム/概要/連絡先/管理者

コントローラーで制限し、メニューでコントローラーをリンクしてみました。しかし、それでもすべての人にリンクが表示され、管理者以外の人にはアクセスが許可されません

ビューをオーバーロードできますか?

13
user60812

使用しているメンバーシップ/ユーザープロバイダーの種類に応じて、ユーザーが特定のロールにログインしているかどうかをビューから直接確認できるはずです。

したがって、次のような結果になります。

@Html.ActionLink("Index", "Home") 
@Html.ActionLink("About", "Home") 
@Html.ActionLink("Contact", "Home") 
@if ( User.Identity.IsAuthenticated ){
    if ( User.IsInRole("Admin") ){
        @Html.ActionLink("Admin", "AdminController")        
    }
}

また、Adminアクションメソッドに[Authorize]属性を追加することを忘れないでください。

[Authorize(Roles="Admin")]
public ActionResult Admin()
{
    // ...
    return View();
}
34
Tim B James