ASP MVC 4 Webアプリケーションをビルドしていますが、ビューに対してきめ細かいアクセス許可を作成する必要があります。これは、ユーザーの役割、データ型の要求、およびその他の承認ルールに応じて、一部のユーザーにいくつかのアクションを表示する必要があることを意味します。
コントローラー側では、必要に応じてAuthorize属性を配置し、次のようなきめ細かいコードを作成します。
public ActionResult Index() {
List<Survey> surveys;
if (MyUser.IsSuperUser) {
surveys = surveyRep.AllSurveys.ToList();
}
else {
surveys = surveyRep.VisibleSurveys.ToList();
}
return View(surveys);
}
私はマルチテナントアプリケーションを構築しているため、スーパーユーザーではないユーザーには「表示されている」調査のみが表示されます。スーパーユーザーは常にすべてを見ることができます。
ここでの問題は、ロジック(DRY)を複製せずに、ビュー側で同じものを作成する方法です。
現在、スーパーユーザーではなく、テナントリンクが1つしかないユーザーの場合、次のかみそりビューロジックを使用します。
<h2>Create</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Survey</legend>
@if (!MyUser.IsSingleTenant) {
<div class="editor-label">
Tenant
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.TenantID, ...
@Html.ValidationMessageFor(model => model.TenantID)
</div>
}
MyUserは現在ログインしている使用を返し、IsSingleTenantは彼女が単一のテナントにのみリンクするかどうかを示します。
これにより、多くの「if-then」ロジックでビューが乱雑になるのではないかと心配しています。
他の人はこれをどのように解決しますか?
ありがとう、イド。