すべてのページ (ビュー) とすべてのコントロール (ボタン、リンク、メニュー項目など) にセキュリティ ロールが適用されているシステムがあります。
したがって、すべてのページとコントロールが登録されている管理インターフェイスがあります。また、各ユーザーには一連の個別の権限があります。
たとえば、次のようになります。
「新規」、「削除」、「戻る」の 3 つのボタンを備えた View EditCar があります。
したがって、ユーザー X には View EditCar を表示する権限があり、「戻る」ボタンのみが表示されます。
そのため、それぞれの新しいビューを登録し、ユーザーを関連付ける必要があります。各ユーザーは 100% 構成可能であるため、役割はありません。
だから、私は FilterAttribute を持っています:
public class CustomAuthorize : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAuthenticated)
{
var userPermissions = repository.GetAll().Where(x => x.Name.Equals(User.Identity.Name);
// if (!userPermissions.Pages.Any(x => x.NamePage.Contains(???))))
}
else
{
filterContext.Result = new HttpUnauthorizedResult();
}
}
}
だから私の質問は: - 各 View(Action) を識別するためにデータベースに何を保持する必要がありますか? たぶん3つの値?エリアコントローラアクション?
それは最良の選択肢ですか?その解決策について他に何か考えはありますか?
ありがとう