要求用户先登录 - 网络

时间:2015-09-07 08:30:58

标签: javascript jquery angularjs web ionic-framework

我正在开发一个网站,只有两页。

  • 1.登陆
  • 2.Home page

我正在使用角度framweork。

app.config(['$routeProvider', function ($routeProvider) {
  $routeProvider
    // Home
    .when("/login", {templateUrl: "partials/login.html", controller: "LoginCtrl",cache:false})
    .when("/newNotification", {templateUrl: "partials/about.html", controller: "NewNotificationCtrl",cache:false})
    .otherwise({
        redirectTo: '/login'
      });
}]);

但是当有人在没有登录的情况下键入website / newNotification时,它正在打开该页面。如果用户直接打开第二页网址,如何限制用户登录页面?

3 个答案:

答案 0 :(得分:1)

你可以使用 stateChangeStart

来实现
      $rootScope.$on('$stateChangeStart', function(event, toState) {
                if ( toState.name !== 'login') {
                    $rootScope.token = localStorage.get('user');
                    if ($rootScope.token === null) {
                        event.preventDefault();
                        $rootScope.goTo('login');
                    }
                } else if (toState.name === 'login') {
                    $rootScope.token = localStorage.get('user');
                    if ($rootScope.token !== null) {
                        event.preventDefault();
                        $rootScope.goTo('home');
                    }
                }
            });

答案 1 :(得分:0)

使用localStorage是我最喜欢的解决方案。当用户登录时,请在username中保存passwordlocalStorage并重定向到您的主页。如果他们退出或关闭页面,您将删除localStorage,当加载主页时,您将检查localStorage项:

if(localStorage.getItem("username")!=null && localStorage.getItem("password")!=null){
    driverLogin();
}

答案 2 :(得分:0)

可能的解决方案是在每个页面打开之前检查用户是否已登录,如果用户未登录,则重定向到登录页面。

app.run(function($rootScope, $location) {
  $rootScope.$on( "$routeChangeStart", function(event, next, current) {
    if (!$rootScope.isLoggedIn) {
      // no logged user, redirect to /login
      $location.path("/login");
    }
  }
});

在您的身份验证服务中:

app.service('AuthService', function($rootScope, $http) {
  return {
    this.login = function() {
      // Send $http request for login
      $http.post(url, loginData)
        .success(function(res) {
          $rootScope.isLoggedIn = true;
        })
        .error(function() {
          // Handle request error
        });
    }
  };
});