繁体   English   中英

Angular / Express:登录后重定向到访问的最后一页

[英]Angular/Express: Redirecting to the last page visited after logging in

这里有一个类似的问题(但不适用)。

在我的SPA中,我使用PassportJS来处理身份验证。 我有很多路由需要用户登录。我这样路由:

// ... other routing stuff
when('/insights', {
    templateUrl: 'partials/insights',
    controller: 'insightsCtrl',
    resolve: { 
        loggedin: checkLoggedin 
    }
})

var checkLoggedin = function($q, $timeout, $http, $location, $rootScope){ 
  var deferred = $q.defer(); 
  $http.get('/loggedin').success(function(user){ 
    if (user !== '0') {
        $rootScope.user = user;
        deferred.resolve(); 
    }
    else { 
      deferred.reject(); 
      $location.url('/login'); 
    } 
  }); 
return deferred.promise; 
};

我检查是否登录的路线:

app.get('/loggedin', function(req, res) {
    res.send(req.isAuthenticated() ? req.user : '0');
});

如果他们没有登录,他们会被重定向到/login 一旦成功完成,我想回到他们试图请求的原始页面。

是否有内置的方法来存储用户尝试访问的路由,以便我可以在登录后重定向到它? 我可以用一个cookie来做到这一点,但是这样做感觉有点笨拙......

除了使用PassportJS提供的自定义回调之外,没有内置方法,但如果您为SPA编写此回调,则可以利用$cacheFactory并创建存储该用户的上次访问页面的服务/工厂。

$ cacheFactory的限制与本地存储相同,因为它们是特定于域的,因此如果更改域,则本地存储将不是相同的跨域。

您可以使用passportjs 文档中说明的自定义回调。 使用自定义回调,您可以将当前查询字符串发送到服务器,并在成功登录后获得重定向到相同的查询字符串。

另一种可能性是使用localStorage来保存当前状态并在登录后获取它。 您有许多模块可以使用localStorage和角度局部存储角度

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM