关键词:
【中文标题】护照会话不存在【英文标题】:Passport session is not presisting 【发布时间】:2017-09-30 22:17:34 【问题描述】:您好,我正在尝试使用本地护照策略实现登录。出于某种奇怪的原因,当我从邮递员发送请求时,我的代码可以工作,但是当我从我的角度项目中调用相同的操作时,它不起作用。追查我发现的问题:
当我从邮递员发送请求时,会话如下所示:
Session
cookie:
path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true
,
passport:
user: 58f0865eb9b69e1d38fa135b
当我从 Angular 发送请求时,会话如下所示:
Session
cookie:
path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true
因为 with passport 策略无法反序列化用户。我不知道为什么会这样,任何帮助将不胜感激。
服务器代码:
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded( extended: true ));
app.use(expressValidator(
customValidators:
isArray: function (value)
return Array.isArray(value);
,
errorFormatter: function (param, msg, value)
var namespace = param.split('.')
, root = namespace.shift()
, formParam = root;
while (namespace.length)
formParam += '[' + namespace.shift() + ']';
return
param: formParam,
msg: msg,
value: value
;
));
app.use(cookieParser());
app.use(expressSession( secret: 'untoldstoryofninja', resave: false, saveUninitialized: true ));
app.use(cors());
app.use(passport.initialize());
app.use(passport.session());
// routes ========================================================================================
app.use(require('./config/routes/routes.js')(passport));
app.all('*', (req, res) => res.status(404).send( msg: 'No API Route.' ));
护照攻略:
module.exports = function (passport)
passport.use(new LocalStrategy( usernameField: "username", passwordField: "password" ,
function (username, password, done)
User.findOne( username: username , function (err, user)
if (err) return done(err);
if (!user) return done(null, false);
if (user.comparePassword(password, function (err, isMatch)
if (isMatch && !err)
done(null, user)
else
done(null, false);
));
);
));
passport.serializeUser(function (user, done)
done(null, user._id);
);
passport.deserializeUser(function (id, done)
User.findById( _id: id , function (err, user)
done(err, user);
);
);
;
【问题讨论】:
【参考方案1】:你需要做的
passReqToCallback: 真
passport.use(new LocalStrategy(
usernameField: 'email',
passwordField: 'passwd',
passReqToCallback: true,
session: false
,
function(req, username, password, done)
// request object is now first argument
// ...
));
还要确保您的字段名称与
匹配sernameField: 'email',
密码字段:'passwd',
【讨论】:
仍然遇到同样的问题快速护照会话不起作用
】快速护照会话不起作用【英文标题】:ExpressPassportSessionnotworking【发布时间】:2016-10-2707:40:05【问题描述】:我正在构建一个Node应用程序,用户必须在其中注册或登录,然后当他们拖放一些元素(前端全部工作)时,我将他们... 查看详情
访问护照中的会话信息
】访问护照中的会话信息【英文标题】:Accessingsessioninformationinpassport【发布时间】:2016-04-1709:38:39【问题描述】:编写一些代码来使用护照验证用户,目前使用的是passport-linkedin-oauth2、passport-google-oauth2、passport-facebook和passport-tw... 查看详情
Apollo express 没有快速护照会话
】Apolloexpress没有快速护照会话【英文标题】:Apolloexpressdon\'thaveexpresspassportsession【发布时间】:2019-07-0905:49:41【问题描述】:对于我们的门户,我将我的快递服务器与护照集成在一起以验证用户身份。一旦用户通过身份验证,... 查看详情
禁用 cookie 时的护照会话管理
】禁用cookie时的护照会话管理【英文标题】:PassportSessionmanagementwhencookiesaredisabled【发布时间】:2014-11-2913:48:19【问题描述】:我正在制作一个Web应用程序,其中AgularJS作为我的前端,Sails(NodeJS+Express)作为我的后端。我正在使用... 查看详情
不在护照快递服务器上保存会话
】不在护照快递服务器上保存会话【英文标题】:Notsavingsessiononpassportexpressserver【发布时间】:2017-09-1814:11:12【问题描述】:将node.js与express服务器一起使用,我的目的是在会话中保存已登录的本地用户,以便我可以从前端调用... 查看详情
与护照、mongodb 和 express 的持久会话
】与护照、mongodb和express的持久会话【英文标题】:persistentsessionswithpassport,mongodbandexpress【发布时间】:2013-04-1007:40:44【问题描述】:我正在使用护照来处理我的应用程序中的身份验证和会话。我正在使用mongostore将会话持久化到... 查看详情
护照登录和持久会话
】护照登录和持久会话【英文标题】:Passportloginandpersistingsession【发布时间】:2016-07-2822:30:33【问题描述】:背景我有一个带有CRUD功能的MEAN应用程序,并已通过邮递员进行了全面测试。我一直在尝试坚持登录很长一段时间,但... 查看详情
如何用护照开会?
】如何用护照开会?【英文标题】:howtoholdasessionwithpassport?【发布时间】:2018-08-2721:22:12【问题描述】:所以,我希望我的用户会话在登录/注册时持续存在,但事实并非如此。官方文档说要添加这个开头:app.use(express.session(secre... 查看详情
如何彻底销毁护照/快递会话?
】如何彻底销毁护照/快递会话?【英文标题】:Howtocompletelydestorypassport/expresssession?【发布时间】:2017-03-0722:16:20【问题描述】:我试过了req.session.destroy();req.logout();req.logOut();注销后我检查req.isAuthenticated()返回false。但是,如果... 查看详情
节点、快递、护照 - 更新记录后更新会话
】节点、快递、护照-更新记录后更新会话【英文标题】:Node,express,passport-updatingsessionafterupdatingrecord【发布时间】:2013-08-2111:50:41【问题描述】:我对节点比较陌生,我已经开始编写一个小应用程序,并且正在处理我的用户身份... 查看详情
护照js如何在会话中存储用户对象?
】护照js如何在会话中存储用户对象?【英文标题】:Howdoespassportjsstoresuserobjectinsession?【发布时间】:2016-05-2309:46:52【问题描述】:我在开发中使用带有护照的节点/快递。我看到一篇文章说:Express加载会话数据并将其附加到请... 查看详情
使用护照 + JWT 或会话保护 GraphQL API? (举例)
】使用护照+JWT或会话保护GraphQLAPI?(举例)【英文标题】:SecureaGraphQLAPIwithpassport+JWT\'sorsessions?(withexample)【发布时间】:2021-04-0219:03:00【问题描述】:提供一些背景信息:我正在编写一个API来为React中的内部CMS提供服务,该CMS... 查看详情
尝试通过护照linkedin集成linkedin登录时“无法在会话中找到请求令牌”
】尝试通过护照linkedin集成linkedin登录时“无法在会话中找到请求令牌”【英文标题】:Getting"failedtofindrequesttokeninsession"whiletryingtointegratelinkedinloginviapassportlinkedin【发布时间】:2016-03-0613:07:42【问题描述】:我在尝试通过... 查看详情
我是不是需要使用快速会话以及护照和 JSON Web 令牌进行身份验证?
】我是不是需要使用快速会话以及护照和JSONWeb令牌进行身份验证?【英文标题】:DoIneedtouseexpresssessionsalongwithpassportandJSONwebtokensforauth?我是否需要使用快速会话以及护照和JSONWeb令牌进行身份验证?【发布时间】:2016-09-1117:54:23... 查看详情
PHP会话变量在不应该存在的时候存在,在应该存在的时候不存在
】PHP会话变量在不应该存在的时候存在,在应该存在的时候不存在【英文标题】:PHPsessionvariableexistingwhenitshouldn\'tandnotexistingwhenitshould【发布时间】:2020-02-1714:48:07【问题描述】:我正在自己的学习项目中寻找乐趣,并且在过去... 查看详情
Sails.js 与护照-http-bearer 身份验证不起作用
】Sails.js与护照-http-bearer身份验证不起作用【英文标题】:Sails.jswithpassport-http-bearerauthenticationnotworking【发布时间】:2013-12-2816:15:28【问题描述】:我正在对护照使用多种策略(本地和不记名策略)。使用本地策略登录有效。我... 查看详情
当前上下文中不存在会话?
】当前上下文中不存在会话?【英文标题】:Sessiondoesntexistincurrentcontext?【发布时间】:2011-07-1921:21:01【问题描述】:在尝试实现会话时遇到问题,它说它在当前上下文中不存在,我错过了什么吗?protectedvoidLogin1_Authenticate(objects... 查看详情
会话不是持久的 [PASSPORT]
...调函数中的重定向处卡在routes/bnetauth.js中。这些是我使用护照的文件app.jsvarexpress=req 查看详情