如何在Passport.js和Sails.js注册后redirect到特定位置?

我正在使用Sails.js,并且已经安装了本地身份validation的passportpassport-local模块。

当我安装护照模块时,一些文件是在策略,服务,模型和控制器下自动创build的。 我已经修改了一些这些文件以适应我的需求,但是,我无法find一种方法来将用户redirect到特定位置后,他注册。

现在,默认行为是用户注册并自动进行身份validation,然后redirect到用户在login时redirect到的相同url。

我试图查看不同的护照生成的文件,但我找不到“注册callback”或类似的东西。 在AuthController ,有一个“callback”方法,看起来像这样:

  callback: function (req, res) { function tryAgain (err) { var flashError = req.flash('error')[0]; if (err && !flashError ) { req.flash('error', 'Error.Passport.Generic'); } else if (flashError) { req.flash('error', flashError); } req.flash('form', req.body); var action = req.param('action'); switch (action) { case 'register': res.redirect('/signup'); break; case 'disconnect': res.redirect('back'); break; default: res.redirect('/login'); } } passport.callback(req, res, function (err, user) { if (err) { return tryAgain(); } req.login(user, function (err) { if (err) { return tryAgain(); } res.redirect('/'); }); }); }, 

但是,这只适用于用户身份validation(login),我想。 我想答案可能在于服务文件夹的护照文件下,但我不确定。 我还没有完全理解代码。

我只是寻找正确的地方甚至放置这个代码,因为我不知道。 那么, 如何在注册后将用户redirect到特定的位置呢? (但只有在那之后)

谢谢。

那么,我不知道这是否是最好的办法,但我觉得它很简单, 这就是我所做的,如果有人发现自己处于类似的情况下,类似的设置。

api/services/protocols/local.js ,有一个名为api/services/protocols/local.js的方法; 在这个方法中,在next()被调用之前,向user声明属性isNew ,如下所示:

 user.isNew = true; 

然后,在AuthControllercallback方法中,在controllers文件夹下,如果用户刚刚注册, req.user.isNew将可用(并设置为true )为req.user.isNew ,这样就可以用你的逻辑,在res.redirect之前。 所以,像这样的东西(在该方法中):

 if(req.user.isNew) { return res.redirect('/welcomePage'); } return res.redirect('/dashboard'); 

就是这样。