护照会话不存在

     2023-03-08     109

关键词:

【中文标题】护照会话不存在【英文标题】: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 查看详情