как изменить часть URL-адреса, если условие будет соответствовать в ui-router?

У меня есть два типа состояний в моем $stateProvider, которые являются URL-адресом доступа для аутентифицированного пользователя и URL-адресом публичного доступа.

У меня есть какие-то 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-адрес. я не думаю, что это будет эффективным способом.

Может кто подскажет способ???


person user3391137    schedule 11.12.2015    source источник


Ответы (1)


проверьте этот URL-адрес... Как передавать параметры с помощью ui-sref в ui-router на контроллер

Можете ли вы предоставить свой код здесь? И дать мне более четкую информацию о ваших требованиях.

person roshini    schedule 11.12.2015
comment
У меня нет проблемы передать параметр контроллеру. Я хочу запретить доступ к общедоступным URL-адресам для зарегистрированного пользователя. Если зарегистрированный пользователь пытается получить доступ через URL-адрес, приложение должно перенаправить на соответствующий URL-адрес для аутентифицированного пользователя. - person user3391137; 11.12.2015
comment
Это означает, что общедоступный пользователь может видеть задания, используя local host/pjobadd/1, у нас есть отдельный URL-адрес с дополнительными функциями для аутентифицированного пользователя. чтобы увидеть задания, которые являются example/joadd/1 . поэтому, когда зарегистрированный пользователь пытается получить доступ к общедоступному URL-адресу jobad, нам нужно перенаправить на аутентифицированный URL-адрес. - person user3391137; 11.12.2015
comment
Какой код вам нужен Я разместил коды, которые я изменил - person user3391137; 11.12.2015
comment
общее приложение или вы можете создать plunker? - person roshini; 11.12.2015