ASP.NET MVC4 を使用しています。
これは私のユーザーロールです
1. Administrator
2. L1 Admin
3. L2 Admin
管理者グループのユーザーは、設定の権限を持っています (使用される追加、権限設定)。ログ、エラー レポートなどを表示します。
ユーザーが管理者グループのメンバーである場合、そのユーザーは上記の設定に関連するメニューのみを表示できます。
メニューの詳細を含むメニュー表があります。削除、編集など、現在のユーザーの役割に基づいて表示され、トップ メニューには表示されない機能がいくつかあります。削除、編集リンクは、データの一覧表示中にテーブル内に配置されます。それも含まれており、そのタイプの entry では、IsVisible は false です。
MenuID - MenuName - Controller - Action - ParentID - IsVisible
各ロールに割り当てられたメニューを持つ roleMenu テーブルがあります。
RoleID - MenuID
管理者がログインしている場合、管理者はすべてのメニューを表示できます。L1Admin がログインしている場合、彼は自分に割り当てられたメニューしか見ることができません。
認証用のカスタム属性を作成した後、データベースにクエリを実行し、コントローラーとアクションに基づいてユーザーのアクセス許可を取得します (テーブル Menu は RoleMenu に参加します)。そのため、ユーザーがブラウザに入力して URL を介してアクションにアクセスしようとすると、リクエストを制限できます。
L1Admin として入力すると、リスト ページしか表示されず、メニューが正しく作成されます。私がリストに使用しているリストページで。ログインしたユーザーのアクセス許可に基づいて、編集/詳細リンクを非表示にするにはどうすればよいですか。
<div style="float: left">
<table width="50%">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td style="width:30%;">
@Html.DisplayFor(modelItem => item.Name)
</td>
<td style="width:20%;">
// I need to hide EDIT/DELETE based on the permission setting of Current logged in user.
@Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
<a href="Server/@item.ID">Details</a> |
@Html.ActionLink("Delete", "Delete", new { id = item.ID })
</td>
</tr>
}
</table>
</div>
前もって感謝します。
編集
権限の詳細をデータベースに保存しています。