У меня есть два типа состояний в моем $stateProvider, которые являются URL-адресом доступа для аутентифицированного пользователя и URL-адресом публичного доступа.
У меня есть какие-то URL-адреса в открытом доступе, дело в том, что мне нужно запретить доступ к этим URL-адресам аутентифицированного пользователя и изменить URL-адрес на другой.
Пример Предположим, http://localhost:3000/#/pjobadd/1 strong> является 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-адрес. я не думаю, что это будет эффективным способом.
Может кто подскажет способ???