를 로그인 리디렉션 나는 4 개 상태를 가지고있다. 대시 보드는 추상이며 .minor 및 .main 상태의 부모 상태입니다. 당신은 내가 해결 옵션이 대시 보드 상태에서 보듯이Angularjs ui-router. <strong>대시 보드</strong>, <strong></strong> dahboard.main, <strong>dashboard.minor</strong>, <strong>로그인</strong> : 어떻게 페이지
.state('dashboard', {
url: "/dashboard",
abstract: true,
templateUrl: "views/dashboard.html",
resolve: {
auth: function ($q, authenticationSvc) {
var userInfo = authenticationSvc.getUserInfo();
if (userInfo) {
return $q.when(userInfo);
} else {
return $q.reject({ authenticated: false });
}
}
},
controller: "DashboardCtrl",
data: { pageTitle: 'Example view' }
})
.state('dashboard.main', {
url: "",
templateUrl: "views/main.html",
controller: "DashboardCtrl",
data: { pageTitle: 'Main view' }
})
: 다음은 내 코드입니다. 이를 통해 권한이없는 사용자를 로그인 페이지로 리디렉션하려고합니다.
.factory("authenticationSvc", ["$http", "$q", "$window", function ($http, $q, $window) {
var userInfo;
function login(email, password) {
var deferred = $q.defer();
$http.post("/api/login", { email: email, password: password })
.then(function (result) {
if(result.data.error == 0) {
userInfo = {
accessToken: result.data.accessToken
};
$window.sessionStorage["userInfo"] = JSON.stringify(userInfo);
deferred.resolve(userInfo);
}
else {
deferred.reject(error);
}
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
}
function getUserInfo() {
return userInfo;
}
return {
login: login,
logout: logout,
getUserInfo: getUserInfo
};
}]);
내가 확인 인증 값 설정 에서 :
.run(function($rootScope, $location, $state) {
$rootScope.$state = $state;
$rootScope.$on("routeChangeSuccess", function(userInfo) {
consol.log(userInfo);
});
$rootScope.$on("routeChangeError", function(event, current, previous, eventObj) {
if(eventObj.authenticated === false) {
$state.go('login');
}
});
});
그러나 불행하게도 나는 내 웹 사이트의 루트 또는 대시 보드 상태로 갈 때 빈을 얻을 이런 이유로 나는 특별한 authenticationSvc 서비스를 사용 페이지. 이 코드의 문제점은 무엇입니까? 감사!
이벤트 이름은 실제로'$ routeChangeSuccess'와'$ routeChangeError'은 (주 선도적 인'$') ... 그렇게 간단하지 수를 다음과 같이
$transitions.onStart
를 사용하여 목적을 달성 할 수 있을까? – Clive