会社用に Angular で新しいエンタープライズ アプリケーションを作成しています。私は角度について非常に興奮していますが、クライアント側でロールを処理することはうまくいきません。
基本的に、ユーザーがログインするたびにトークンを保存し、ユーザーがページを表示する前に、トークンに基づいてロールとユーザーの詳細を取得するために承認要求がサーバーに送信されます。
ユーザーのロールに関係なくデータ全体を返すサーバーにページのデータを取得するリクエストを承認した後、ng-switch を使用し、ロールに従ってテンプレートをレンダリングします。
ここでの問題は、クライアント側でデータを表示および非表示にしようとしているため、ユーザー情報を受け取った後、クライアント側の任意のスコープ変数またはローカル ストレージにロールを保持する必要があることです。ただし、ここでのポイントは、クライアント側に保持すると、役割を非常に簡単に変更して、必要なデータにアクセスできるということです。
したがって、サーバーからの役割に従ってクライアント側にデータを表示しようとしているアプリにはAngularが適していないと仮定する必要があります。ユーザーがロジックとデータを見ることができれば、明らかにそれで遊ぶことができるからです。
これが私の見解です
<div ng-switch="User.data.Role">
<div ng-switch-when="Admin">
<h1>hello you are seeing your dashboard Admin</h1>
</div>
<div ng-switch-when="Manager">
<h1>hello you are seeing your dashboard Manager</h1>
</div>
</div>
コントローラーにユーザー変数を入力する方法は次のとおりです
app.controller('dashoBoardController', ['$scope','UserService', function ($scope, UserService) {
$scope.authentication = UserService.authentication;
$scope.User = UserService.fillAuthData();
console.log($scope.User);
$scope.Greeting = "Welcome! to your Dashboard";
}]);
これは Service メソッドです
var _fillAuthData = function () {
var authData = SessionService.get('user');
if (authData) {
_authentication.isAuth = true;
_authentication.data = authData;
}
console.log(_authentication);
return _authentication;
}
セッション サービスは、トークンに基づいてサーバーからユーザー データを取得しています。ご覧のとおり、ビューは非常に説明的であるため、authData の役割を変更することは大したことではありません。
これに対する回避策があれば、私を助けてください。私はこのプロジェクトを Angular で本当にやりたかったのです。