私はシンプルなjhipsterアプリを持っています。私は認証されたユーザーが無効なホームページにリダイレクトするようにしたいですurl
。後述するようにこれまで私はhome.state.js
を変更し、login.state.js
を追加しました:無効なURLヒットのホームページに認証されたユーザーをリダイレクト
home.state.js
(function() {
'use strict';
angular
.module('anvilIqApp')
.config(stateConfig);
stateConfig.$inject = ['$stateProvider'];
function stateConfig($stateProvider) {
$stateProvider.state('home', {
parent: 'app',
url: '/home',
data: {
authorities: ['ROLE_USER']
},
views: {
'[email protected]': {
templateUrl: 'app/home/home.html',
controller: 'HomeController',
controllerAs: 'vm'
}
},
resolve: {
mainTranslatePartialLoader: ['$translate', '$translatePartialLoader', function ($translate,$translatePartialLoader) {
$translatePartialLoader.addPart('home');
return $translate.refresh();
}]
}
});
}
})();
あなたが見ることができるようにlogin.state.js
(function() {
'use strict';
angular
.module('anvilIqApp')
.config(stateConfig);
stateConfig.$inject = ['$stateProvider'];
function stateConfig($stateProvider) {
$stateProvider.state('login', {
parent: 'app',
url: '/',
data: {
authorities: []
},
views: {
'[email protected]': {
templateUrl: 'app/components/login/login.html',
controller: 'LoginController',
controllerAs: 'vm'
}
},
resolve: {
mainTranslatePartialLoader: ['$translate', '$translatePartialLoader', function ($translate,$translatePartialLoader) {
$translatePartialLoader.addPart('login');
return $translate.refresh();
}]
}
});
}
})();
、 rootがログインページになりました。認証されたユーザーが無効なurl
にヒットした場合、通常のログインページが表示されます。無効なURLヒットの場合、ユーザーを/home
にリダイレクトします。 auth.service.js内部
私はこのスニペットを持っている:
function authThen() {
var isAuthenticated = Principal.isAuthenticated();
// an authenticated user can't access to login and register pages
if (isAuthenticated && $rootScope.toState.parent === 'account' && ($rootScope.toState.name === 'login' || $rootScope.toState.name === 'register')) {
$state.go('home');
}
// recover and clear previousState after external login redirect (e.g. oauth2)
if (isAuthenticated && !$rootScope.fromState.name && getPreviousState()) {
var previousState = getPreviousState();
resetPreviousState();
$state.go(previousState.name, previousState.params);
}
if ($rootScope.toState.data.authorities && $rootScope.toState.data.authorities.length > 0 && !Principal.hasAnyAuthority($rootScope.toState.data.authorities)) {
if (isAuthenticated) {
// user is signed in but not authorized for desired state
$state.go('accessdenied');
}
else {
// user is not authenticated. stow the state they wanted before you
// send them to the login service, so you can return them when you're done
storePreviousState($rootScope.toState.name, $rootScope.toStateParams);
// now, send them to the signin state so they can log in
$state.go('accessdenied').then(function() {
$state.go('login');
});
}
}
}
おかげでたくさん... – fatCop