MVC 3 の特定のフィールドに承認を設定することは可能ですか?
私の最初の考え (および MSDN の調査) は、[Authorize] タグはコントローラー レベルのアクション (作成、編集、インデックスなど) のみに使用されることを示しています。コントローラーアクションでこれを行うことができます:
[Authorize(Roles = "RoleA,RoleB")]
public ActionResult Create()
{
return View(new Tracking());
}
シナリオは、2 つのロール (RoleA と RoleB) が「編集」コントローラーにアクセスできるというものです。ただし、最初のフィールドを変更できるのは RoleA だけです。もう一方の役割 (B) は、フィールドを表示することしかできません。
特定のフィールドで次のようなことをしたいと思います。
[Required]
[Range(1, 99)]
[Authorize(Roles = "RoleA")]
public int Sequence { get; set; }
更新1:
StackOverflow のウサギの役割をもう少し調査すると、部分ビューを使用する必要があることがわかります。
したがって、私の見解では、次のコードを追加します。
<div>
@if (Context.User.IsInRole("RoleA"))
{
@Html.Partial("_SequenceEdit")
}
else
{
@Html.Partial("_SequenceView")
}
</div>
したがって、ユーザーが RoleA の場合、「sequence」フィールドを編集できる部分ビューが表示されます。それ以外の場合、「sequence」フィールドのみが表示されます。
私のビューのみの部分ビューは次のようになります。
<div class="editor-label">
@Html.LabelFor(model => model.Sequence)
</div>
<div class="editor-field">
@Html.DisplayFor(model => model.Sequence)
@Html.HiddenFor(model => model.Sequence)
@Html.ValidationMessageFor(model => model.Sequence)
</div>