Sails控制器如何获取请求历史记录

时间:2014-06-12 00:15:16

标签: node.js model-view-controller sails.js

我正在使用Nodejs(使用Sails& Passport框架)开发一个网站。我想知道Sails控制器如何获取用户的请求历史记录。 例如,用户请求' /',但控制器会将用户重定向到' / signin'。然后用户请求' / signin'使用res.redirect()。所以请求历史记录似乎是

  1. ' /'
  2. ' /登入'
  3. 现在SignInController处理请求,最后,它想要将用户重定向回' /'。因此控制器应该知道用户请求的历史记录。我想应该有一些框架可以记录请求历史记录并使用会话或其他东西存储它们。谁能给我一些关于此的提示?

1 个答案:

答案 0 :(得分:2)

如果我理解得很清楚,请告诉我,但您要做的是将用户重定向到登录前的任何网址,对吗?

为此,您可以使用策略(针对所有请求执行的策略,仅针对您需要的方法)。 我们在这里做的只是保存最新的位置(不是整个历史)

api / policies / ensureReturnToUrl 中:

'use strict';

module.exports = function (req, res, next) {

  req.session.returnTo = req.url;

  return next();
};

配置部分与 config / policies.js

中的配置部分类似
  '*': ['passport', 'isAuthenticated', 'ensureReturnToUrl'],
  AuthController: {
    '*': ['passport']
  }

此处您必须小心将此政策放在正确的位置。例如,你不想让它在你身上" / signin"方法(这与整个观点相悖)

然后,在成功登录后,您只需阅读" returnTo"属性并重定向用户:(例如在AuthController

if (req.session.returnTo) {
   res.redirect(req.session.returnTo);
} else {
   res.redirect('/');
}

显然这需要根据您的用例进行调整,但政策绝对是您所需要的。