使用 Passport.js 和 Sails.js 注册后如何重定向到特定位置?
Posted
技术标签:
【中文标题】使用 Passport.js 和 Sails.js 注册后如何重定向到特定位置?【英文标题】:How to redirect to specific location after registration with Passport.js and Sails.js? 【发布时间】:2015-05-30 01:42:45 【问题描述】:我正在使用 Sails.js,并且我已经安装了 passport
和 passport-local
模块,用于本地身份验证。
当我安装护照模块时,在策略、服务、模型和控制器下自动创建了一些文件。我已经修改了其中一些文件以满足我的需要,但是,我找不到一种方法可以在用户注册后将其重定向到特定位置。
目前,默认行为是用户注册并自动进行身份验证,然后重定向到用户登录时重定向到的相同 url。
我尝试查看不同的护照生成文件,但找不到“注册回调”或类似的东西。在AuthController
中有一个“回调”方法,如下所示:
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('/');
);
);
,
但是,我认为这仅适用于用户通过身份验证(登录)时。 我认为答案可能位于服务文件夹中的护照文件下,但我不确定。我还没有完全理解代码。
我只是在寻找放置此代码的正确位置,因为我不知道。那么,如何在用户注册后将其重定向到特定位置? (但只有在那之后)
谢谢。
【问题讨论】:
【参考方案1】:好吧,我不知道这是否是最好的方法,但我发现它很简单;这就是我所做的,以防万一有人发现自己处于类似情况并具有类似设置。
在api/services/protocols/local.js
下,有一个名为exports.register
的方法;在该方法中,在调用next()
之前,将属性isNew
声明为user
,如下所示:
user.isNew = true;
然后,在AuthController
的callback
方法中,在controllers 文件夹下,isNew
将作为req.user.isNew
可用(并设置为true
),如果用户刚刚注册,那么这样,您可以在调用res.redirect
之前使用它来执行您的逻辑。所以,像这样(在那个方法中):
if(req.user.isNew)
return res.redirect('/welcomePage');
return res.redirect('/dashboard');
就是这样。
【讨论】:
以上是关于使用 Passport.js 和 Sails.js 注册后如何重定向到特定位置?的主要内容,如果未能解决你的问题,请参考以下文章
Sails.js + Passport.js 获取当前登录用户