环回保护路由/确保登录

时间:2014-09-16 19:05:56

标签: express token strongloop loopbackjs

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

我认为这将是一个标题,类似于headers.authorization_token,但它似乎并不存在。

我正在为护照寻找类似connect-ensurelogin的东西,而不必使用护照。

2 个答案:

答案 0 :(得分:4)

这是解决问题的$ interceptor。

此代码从Loopback 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);
});

答案 1 :(得分:1)

这是一种对我有用的可能方法(细节可能有所不同):

  1. 设置单页角色应用程序中的每个页面,以便在解析Angular Route时进行一次REST API调用。

  2. 使用LoopBack提供的AccessToken / User / Role / ACL方案保护所有REST API路由。

  3. 如果在REST服务器端未检测到有效的访问令牌,则传回401 Unauthorized Error。

  4. 在客户端数据访问中,当您在REST呼叫上检测到401时,重定向到您的逻辑路由。

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

  6. 以下是LoopBack访问控制示例:https://github.com/strongloop/loopback-example-access-control