私は、各アクションにAuthorize
属性を持つ安全なアプリケーションを持っています。MVC UIコントローラー/アクションに基づくプルーニング
[Authorize(Roles = "Role1,Role2")]
public ActionResult MyAction(int id)
{
return View();
}
私のUIには、これらのコントローラ/アクションへのリンクがあります。
@Html.SecuredLink("Click Me", "MyAction", "MyController");
そして、これは自分自身をレンダリングするために天候を決定するであろうか、ユーザーが指定したアクションに権限を持っているかどうかに基づいて:
私はコントローラとアクション名を受け入れ、リンク用のカスタムのHtmlHelperを作成したいですpublic static MvcHtmlString SecuredLink(this HtmlHelper helper, string text, string action, string controller)
{
var userId = Membership.GetUserId();
var userHasRightsToThisAction = IsActionAccessibleToUser(helper.ViewContext.RequestContext.HttpContext, controller, action); // <- How would this work?
if (userHasRightsToThisAction)
{
// Render Link
// ...
}
}
承認ステータスのコードからアクションを簡単にテストする方法が見つかりませんでした。
正常にリンクをレンダリングして、カスタムAuthorizeAttributeにリダイレクトすることはできませんなぜあなたは明確にすることはできますか?しかし、私はあなたがUser.Identityオブジェクトを最初に調べ、認可名を持っていなければならないと思うので、レンダリングを決めることができます。 – BigMike
リンク先のページへのアクセス権がないユーザーは、リンクをクリックできないようにしたいと考えています。 – CodeGrue