【发布时间】:2018-01-09 16:47:36
【问题描述】:
请注意,我是 node js 的初学者,所以提前道歉。
app.use(express.static(__dirname + uiDir));
app.use(cookieParser('SecretKey'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(session({
secret: 'SecretKey',
resave: true,
saveUninitialized: true,
rolling:'true',
cookie:{
maxAge: 60*1000*30,
secure:true,
httpOnly: true,
}
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(helmet({
frameguard: {
action: 'sameorigin'
}
}));
app.use(flash());
passport.serializeUser(function(user, done) {
done(null, user.username);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
passport.use('local',new LocalStrategy(
function(username, password, done) {
var loginqry = {
jsonrpc: '2.0',
id: 12,
method: 'call',
params: [ 'toIntergrateLater', 'users',
'authenticate',
{"username":username,
"password":password
}
]
};
BackendAuthservice.auth(loginqry,function(data){
if(data.result.error=="Wrong password"){
return done(null, false, { message: 'Incorrect username or password.' });
}
if(data.result.error=="User not found"){
return done(null, false, { message: 'User not found' });
}
else{
data.result.status = true;
return done(null,data );
}
});
}));
此代码在 IE、Firefox、Chrome、Mac-google-chrome 上运行良好,但 当我访问 MAC Safari (req.user) 时未定义。请帮忙
来自 safari 的传入请求,我在 passport-js 的成功重定向上获得 req.user undefined
【问题讨论】:
-
嗨 abhijeet,您找到解决方案了吗?我遇到了完全相同的问题。
-
嗨@bprdev,浏览器正在向我的快速服务器发送一个包含当前时间的请求,但是我的服务器PC在恢复出厂设置时显示从当前日期过去15天的时间,并且快速会话超时时间为只有30分钟。由于哪个浏览器发送了带有过期 cookie 的响应,因此没有调用“Set-cookie”。将我的快速服务器系统与 NTP 同步解决了我的问题。
标签: javascript node.js safari passport.js express-session