我的 $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'
}
})
并在 app.js 中使用requireChange如下
$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 的问题。我认为这不是有效的方法。
任何人都可以建议一种方法吗???