【问题标题】:passport session not created when using request使用请求时未创建护照会话
【发布时间】:2016-04-13 14:12:28
【问题描述】:

我正在使用 passportJS 来处理服务器后端上的登录和持久会话。

从服务器前端传递请求时会话正常工作(我没有创建的网页,并且没有足够的知识来处理),但是当使用请求(https://www.npmjs.com/package/request)手动向服务器发送请求时,会话根本不起作用——不调用deserializeUser,未定义req.user。

这是来自前端的相关代码。

$.ajax({
    type:"POST",
    url: GE.SERVER_URL + '/publish',
    data: {
      name: $( '#new_publication_name' ).val(),
      code: column.editor.getValue(),
      language: column.mode,
      permissions: $( '#new_publication_permissions' ).prop( 'checked' ),
      tags: $( '#new_publication_tags' ).val().split(','),
      notes: $( '#new_publication_notes' ).val(), 
      instrument: false,
      username: Gibber.Environment.Account.nick
     },
    dataType:'json'
  })
  .done( function ( data ) {        
    if( data.error ) {
      GE.Message.post( 'There was an error writing to Gibber\'s database. Error: ' + data.error )
    }else{
      GE.Message.post( 'Your publication has been saved to: ' + GE.SERVER_URL + '/?path=' + data._id )
    }

这是我正在使用的代码。

request.post({url:'http://127.0.0.1:8080/publish',form:{filename:"steinfile", code:"john doe", language:"english",tags:["testfile"],notes:"thesearenotes"}}, function (error, response, body) {
    if (!error && response.statusCode == 200) {
    console.log(body);
    }
    else
    {
        console.log(error);
    }
})

谢谢!

【问题讨论】:

  • 使用您的 request.post 您不会发送会话正常工作所需的 cookie。我想这就是问题所在。
  • 谢谢!那解决了它。不过,我不确定如何将您的评论标记为正确的解决方案。
  • 添加答案,以便您将其标记为正确。谢谢

标签: javascript node.js session request passport.js


【解决方案1】:

您不会将 cookie 与您的 request.post 一起发送。

它们是会话正常工作所必需的。

【讨论】:

    猜你喜欢
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 2017-04-04
    • 2018-06-14
    相关资源
    最近更新 更多