1

会社用に 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 で本当にやりたかったのです。

4

2 に答える 2

1

Web サービス (サーバー上で実行) が、認証されたユーザーがアクセスを許可されていないデータをクライアントに返す場合、Web サービス (サーバー側) にはセキュリティ上の欠陥があります。どのクライアント側フレームワークを選択するかに関係なく、そのクライアント/ブラウザー側を修正する方法はありません。AngularJS は、ブラウザーで実行したいことにはおそらく問題ありませんが、Web サービスが壊れています。

于 2014-09-10T15:20:48.640 に答える
0

サーバー側のセキュリティはここでは問題ではありません。サーバー側のセキュリティは、常にセキュリティの最後のゲートである必要があり、常に細心の注意を払って実装する必要があります。

ただし、クライアント側でロールをハックして、サーバーからデータを取得しなくても、ユーザーが見ることができないはずのインターフェイスを表示できることは、最高のエクスペリエンスではありません。

毎回リモートでロールを確認し、ロールをローカルに保存しないことで問題は解決しますが、コストがかかります。ロール情報を暗号化し、クライアント側でのロールのハッキングをより困難にするネイティブな方法はありますか?

于 2015-11-12T15:48:19.170 に答える