Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Passport会话清除请求会话_Javascript_Node.js_Session_Passport.js - Fatal编程技术网

Javascript Passport会话清除请求会话

Javascript Passport会话清除请求会话,javascript,node.js,session,passport.js,Javascript,Node.js,Session,Passport.js,我正在用NodeJS编写一个会话,当我获得用户连接时,首先创建一个会话。使用MAC地址的客户端,目前为止还不错,但是我问客户端他是否想继续并使用社交网络(如Facebook、Instagram、Tweeer或Google+)登录应用程序,然后,当用户被重定向到社交登录时,它将与passportjs中的其他会话一起返回,并清除会话的所有我的初始数据,我丢失了客户端信息。所以,我尝试更改会话中数据的名称,session.data,session.test,session.whates,但总是发生相同

我正在用NodeJS编写一个会话,当我获得用户连接时,首先创建一个会话。使用MAC地址的客户端,目前为止还不错,但是我问客户端他是否想继续并使用社交网络(如Facebook、Instagram、Tweeer或Google+)登录应用程序,然后,当用户被重定向到社交登录时,它将与passportjs中的其他会话一起返回,并清除会话的所有我的初始数据,我丢失了客户端信息。所以,我尝试更改会话中数据的名称,session.data,session.test,session.whates,但总是发生相同的情况,当我测试时,passport将我重定向并返回到我的域,会话是干净的,它会随着passportjs中的新数据而更改,有人知道这里发生了什么吗?你知道怎么解决这个问题吗

代码运行得很好,问题是会话在返回//社交登录时,它清除了我的init数据,然后返回passport数据。//我需要我的初始数据才能继续工作

这只是代码的摘录。它起作用了

“使用sctrict”
const https=require('https'),
fs=需要('fs'),
path=require('path'),
morgan=要求(“morgan”),
记录器=需要('express-logger'),
express=require('express'),
favicon=要求('serve-favicon'),
bodyParser=require('body-parser'),
methodOverride=require('method-override'),
passport=require('passport'),
//配置文件
端口=443,
mongodbConfig=require('./config/mongodb-config'),
会话=需要(“快速会话”),
键=需要('./config/keys'),
选项={
key:fs.readFileSync('./config/ssl/server.key'),
证书:fs.readFileSync('./config/ssl/server.crt')
},
cookieParser=require('cookie-parser'),
loginAPRoutes=require(“./routes/loginAPRoutes”),
passportSetup=require(“./config/passport setup”),
app=express()
//MongoDB-Mongoose连接
const mongoose=require('mongoose')
猫鼬。承诺-全球。承诺
connect('mongodb://'+mongodbConfig.mongodb.route+'/'+mongodbConfig.mongodb.db,{})
.然后(()=>console.log('db connected'))
.catch(err=>console.log(err))
//配置
app.set('查看引擎','ejs')
//中间商
应用程序使用(摩根(‘开发’))
app.use(favicon(path.join(uu dirname,'public/img/','favicon.ico'))
app.use(bodyParser.urlencoded({
扩展:false
}))
app.use(bodyParser.json())
app.use(methodOverride('X-HTTP-Method-Override'))
app.use(express.static(path.join(uu dirname,'public'))
应用程序使用(会话)({
秘密:“机器人猫”,
resave:false,
saveUninitialized:true
}))
//初始化护照
app.use(passport.initialize())
app.use(passport.session())
//主要路线
app.use('/guest',loginaproces)
app.use('/auth',loginAPRoutes)
//运行服务器https
https.createServer(选项,应用程序).listen(端口,()=>{
console.log('NodeJS服务器已启动…splice.pro正在运行!')
})
路由器.get('/s/:site',(req,res)=>{
数据=请求查询
data.site=req.params.site
req.session.data=数据
console.log('====会话===========')
控制台日志(请求会话)
console.log('=======会话结束===========')
res.render('login')
})
///////////////谷歌认证////////////////
//谷歌登录路线
router.get('/google',passport.authenticate('google'{
范围:['profile','email']
}))
//谷歌的路线和重定向
router.get(“/google/callback”,
passport.authenticate('google'),(req,res)=>{
如果(!请求用户){
res.redirect(“/guest/s/site”)
}否则{
///////////下面是passport的新会话:(//////
//////////并丢失了我会话的第一个数据/////
控制台日志(请求会话数据)
////////////////这将显示包含用户信息的会话///////
///////////////但是req.session.data丢失了///////////
res.redirect(“/guest/startconnection”)
}
}
)

///////////////GOOGLE AUTH END/////code>好吧,好吧,好吧……我发现了我的问题,我的外部站点用ip将我重定向到我的服务器,当passport登录请求重定向时,它将返回到域名,这就是它生成新会话id的原因……漫长的一天,但最后我找到了它