Javascript 要求用户先登录-web

Javascript 要求用户先登录-web,javascript,jquery,angularjs,web,ionic-framework,Javascript,Jquery,Angularjs,Web,Ionic Framework,我正在开发一个只有两个页面的网站 1.登录 2.主页 我用的是有角度的框架 app.config(['$routeProvider', function ($routeProvider) { $routeProvider // Home .when("/login", {templateUrl: "partials/login.html", controller: "LoginCtrl",cache:false}) .when("/newNotification"

我正在开发一个只有两个页面的网站

  • 1.登录
  • 2.主页
我用的是有角度的框架

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时,它正在打开该页面。如何限制用户仅在直接打开第二个页面URL时登录页面?

您可以使用stateChangeStart


使用
localStorage
是我最喜欢的解决方案。当用户登录时,在
localStorage
中保存
用户名
密码
,并重定向到您的主页。如果他们注销或关闭页面,您将删除
本地存储
,加载主页时,您将检查
本地存储
项:

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

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

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
        });
    }
  };
});

这取决于身份验证系统的工作方式。(如果用户未登录,除非服务器拒绝提供机密数据,否则这将非常无用。)登录主页的一部分是必要的,因为我在主页中使用用户名和邮件id。当我直接点击主页url时,它将邮件和用户名显示为null nulladd httpInterceptor,并检查用户是否登录,我相信$stateChangeStart与angular ui路由器相关,而不是$routeProvider和angular Route。您也可以将$routeChangeSuccess用于ngRoute
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
        });
    }
  };
});