Express 环回保护路由/确保登录

Express 环回保护路由/确保登录,express,token,strongloop,loopbackjs,Express,Token,Strongloop,Loopbackjs,在使用环回渲染视图之前,如何确保用户已登录? 我可以用我的angular应用程序在前端登录。但我想阻止匿名用户查看该页面 我以为它会是一个header,类似headers.authorization\u令牌,但它似乎不在那里 我正在寻找类似connect ensurelogin for passport的东西,而不必使用passport。这里有一种可能的方法对我有效(细节可能会有所不同): 在单页Angular应用程序中设计每个页面,以便在解析Angular路由时在一次REST API调用时进行

在使用环回渲染视图之前,如何确保用户已登录? 我可以用我的angular应用程序在前端登录。但我想阻止匿名用户查看该页面

我以为它会是一个header,类似headers.authorization\u令牌,但它似乎不在那里


我正在寻找类似connect ensurelogin for passport的东西,而不必使用passport。

这里有一种可能的方法对我有效(细节可能会有所不同):

  • 在单页Angular应用程序中设计每个页面,以便在解析Angular路由时在一次REST API调用时进行

  • 使用环回提供的AccessToken/User/Role/ACL方案保护所有REST API路由

  • 在REST服务器端未检测到有效的访问令牌时,传回401未授权错误

  • 在客户端数据访问中,当您在REST调用中检测到401时,重定向到逻辑路由

  • 为了获得最流畅的用户体验,无论何时重定向到登录,都要存储用户希望全局访问的路由 (localStore、$RootScope等)并在用户 登录并获取有效的访问令牌


  • 这是环回访问控制示例:

    这是解决您问题的$interceptor

    此代码检测来自环回REST服务器的401个响应(用户未登录或访问令牌已过期),并将用户重定向到登录页面:

    // Inside app config block
    $httpProvider.interceptors.push(function($q, $location) {
      return {
        responseError: function(rejection) {
          if (rejection.status == 401) {
            $location.nextAfterLogin = $location.path();
            $location.path('/login');
          }
          return $q.reject(rejection);
        }
      };
    });
    
    一旦用户登录,此代码将重定向到请求的页面

    // In the Login controller
    User.login($scope.credentials, function() {
      var next = $location.nextAfterLogin || '/';
      $location.nextAfterLogin = null;
      $location.path(next);
    });