0

$stateProvider には、認証済みユーザー アクセス URL とパブリック アクセス URL の 2 種類の状態があります。

パブリックアクセスにある種のURLがあります。これらのURLが認証されたユーザーにアクセスできないようにする必要があり、URLを別のものに変更する必要があります。

http://localhost:3000/#/pjobadd/1がパブリック アクセス URL であるとします。認証されたユーザーがこの URL にアクセスする場合、http://localhost:3000/#/jobadd/1として変更する必要があります。

私は以下のように解決策を取ろうとしています

私は状態プロバイダーのようなパラメーターを添付しました

.state('admin-panel.public.jobadd', {
    url: '/pjobadd/:jobID',
    templateUrl: 'app/public/jobadd.tmpl.html',
    controller: 'PublicJobaddController', 
    resolve: {
           jobAdd: ['Public', '$stateParams', function(Public,$stateParams) {                   
                        return Public.jobAdd($stateParams.jobID);
                    }]
     },
    data: {
        requireChange: 'pjobadd'
    } 
})

そのrequireChangeをapp.jsで次のように使用しました

$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
  if (!Auth.isAuthenticated()){
            var requireChange = toState.data.requireChange;
            console.log(requireChange);
            switch(requireChange){
               case 'pjobadd':
                $state.go('admin-panel.default.jobadd');
               case 'psearch':
                $state.go('admin-panel.default.search');

  }

URLに渡されたパラメーターを追加する必要がある問題があり、 $state.go() も上記のURLにリダイレクトされません。私はそれが効率的な方法だとは思わない。

誰かがそれに方法を提案できますか???

4

1 に答える 1