Я использую Stateprovider для маршрутизации между различными представлениями и хотел включить вход в систему для определенного представления.Я использую $ transitions.onStart в функции запуска приложения и перенаправляю на страницу входа, когда представление требует входа в систему.Я могу перенаправить на страницу входа и установить флаг аутентификации, но я не знаю, как перенаправить в представление testAuth после успешного входа.Я могу подумать, что могу использовать $ transitions.onSucess и проверить флаг аутентификации для правильной маршрутизации.Я не совсем уверен, что это подходящее решение, а также не очень знаком с $ переходами.Спасибо за вашу помощь.
controller('LoginCtrl',['$scope', '$state', 'Auth', 'ParseService', function($scope, $state, Auth, ParseService)
{
$scope.credentials = {};
//$scope.auth = Auth;
$scope.doLoginAction = function () {
ParseService.login($scope.credentials).then(function (_loggedInUser) {
// successful response from the service, the user is
// logged in and we have a user object
alert("User Logged In " + _loggedInUser.username);
Auth.isLoggedIn = true;
}, function error(_errorResponse) {
// if error occurred anywhere above, this code will
// be executed
alert("ERROR " + _errorResponse);
Auth.isLoggedIn = false;
});
};
.state('testauth',{
url : '/testAuth',
templateUrl: 'pages/testAuth.html',
data : {requireLogin : true }
})
.state('login',{
url : '/login',
templateUrl : 'pages/login.html',
controller : 'LoginCtrl',
})
app.run(function ($rootScope, $transitions, $state, $location, Auth) {
console.log("In Transition");
console.log("Auth Is Logged In: " + Auth.isLoggedIn);
$transitions.onStart({
to: function (state) {
return state.data !== undefined && state.data.requireLogin && !Auth.isLoggedIn;
}
}, function () {
if (!Auth.isLoggedIn) {
return $state.target("login");
}
});
});