Как сделать страницу входа первым в angularjs

0

Я новый с angularjs, и я пытаюсь использовать этот генератор-угловой-фулл-сток,

Я хочу, чтобы страница была первой, а не основной, я играю с кодом, и мое решение заключается в том, чтобы добавить "authenticate: true" в MainCtrl

angular.module('myapp')
  .config(function ($stateProvider) {
    $stateProvider
      .state('main', {
        url: '/',
        templateUrl: 'app/main/main.html',
        controller: 'MainCtrl',
        authenticate: true
      });
  }); 

и прокомментируйте строку 'event.preventDefault();' в app.js в функции запуска

.run(function ($rootScope, $location, Auth) {
    // Redirect to login if route requires auth and you're not logged in
    $rootScope.$on('$stateChangeStart', function (event, next) {
      Auth.isLoggedInAsync(function(loggedIn) {
        if (next.authenticate && !loggedIn) {
          //event.preventDefault();
          $location.path('/login');
        }
      });
    });

Но я не уверен, что эти изменения хороши или есть другие лучшие решения.

Теги:
angular-fullstack
login
yeoman-generator

1 ответ

1
Лучший ответ

для этого ваш код будет таким:

в main.js

 angular.module('myapp')  
       .config(function ($stateProvider) {
        $stateProvider
          .state('main', {
            url: '/main',
            templateUrl: 'app/main/main.html',
            controller: 'MainCtrl'
          });   
      });

в account.js

    angular.module('myapp')
      .config(function ($stateProvider) {
        $stateProvider
          .state('login', {
            url: '/',
            templateUrl: 'app/account/login/login.html',
            controller: 'LoginCtrl'
          })
          .state('signup', {
            url: '/signup',
            templateUrl: 'app/account/signup/signup.html',
            controller: 'SignupCtrl'
          })
          .state('settings', {
            url: '/settings',
            templateUrl: 'app/account/settings/settings.html',
            controller: 'SettingsCtrl',
            authenticate: true
          });
      });

в login.controller.js

angular.module('myapp')
  .controller('LoginCtrl', function ($scope, Auth, $location, $window) {
    $scope.user = {};
    $scope.errors = {};

    $scope.login = function(form) {
      $scope.submitted = true;

      if(form.$valid) {
        Auth.login({
          email: $scope.user.email,
          password: $scope.user.password
        })
        .then( function() {
          // Logged in, redirect to home
          $location.path('/main');
        })
        .catch( function(err) {
          $scope.errors.other = err.message;
        });
      }
    };

    $scope.loginOauth = function(provider) {
      $window.location.href = '/auth/' + provider;
    };
  });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню