単一ページ アプリケーション スタイルの Web アプリケーションを開発しています。ユーザーの役割に基づいてメニューを作成したい。たとえば、管理者ユーザーには管理者メニューと html コンテンツを表示したい、一般ユーザーには別の html コンテンツを表示したい。Razor ビュー エンジンで asp.net mvc を使用しているため、次のように Razor コードで実現できます。
@if (@User.IsInRole("Admin"){
-- html content for admin --
}else if (@User.IsInRole("General"){
-- html content for general user --
}else{
-- html content for the other users --
}
これは、以前は従来の方法で Web アプリケーションを開発していたときの典型的な方法でしたが、単一ページ アプリケーション スタイルの Web アプリケーションを開発するようになってからは、純粋な html コードを記述して、Razor や WebForm などのサーバー サイド ビュー エンジンを使用することを避けました。 asp.net または Velocity、Java EE の Jsp タグ ライブラリ。サーバーコードに依存しない、より独立したフロントエンドコードを書きたい。
とにかく、Razorの代わりにjavascriptとknockoutjsを使用する場合、上記のコードは次のように変更できます。
<!-- ko if: isAdmin -->
-- html content for admin --
<!-- /ko -->
<!-- ko if: isGeneralUser -->
-- html content for general user --
<!-- /ko -->
<!-- ko if: isOtherUser -->
-- html content for the other users --
<!-- /ko -->
isAdmin、isGeneralUser、および isOtherUser はビューモデルのプロパティであり、これらの値はユーザーのロールをチェックする ajax 呼び出しを介して設定されます。
私が疑問に思っているのは、ユーザーの役割に基づいてコンテンツを制御するこの種の方法が、セキュリティの観点から問題ないかどうかということですか?
ユーザーの役割によってビューが異なる場合、ビューのコンテンツをどのように処理しますか? 皆さんはこのような状況にどのように対処していますか。