我正在尝试使用passport.js,node和sequelize创建一个应用程序。 但是,护照并没有像预期的那样在会话中返回用户。
当我记录req.session时,我得到了这个:
a=0.400256;
b=0.916403;
f = @(x) [-x(1) + a*x(1) - b*x(2) + b*x(1)^2];
f2 = @(x) [-x(2) + b*x(1) + a*x(2) - a*x(1)^2];
ezplot('f',[-10 10 -10 10]); hold on;
ezplot('f2',[-10 10 -10 10]);
grid
当我记录req.session.passport时,我得到了未定义。
我该如何解决这个问题?
这是我的server.js:
Session {
cookie:
{ path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: true } }
这是我的passport.js:
const express = require('express');
const load = require('express-load');
const passport = require('passport');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const session = require('express-session');
// var app = express();
var app = module.exports = express();
// read cookies (needed for auth)
app.use(cookieParser());
// get information from html forms
app.use(bodyParser());
//set session
app.set('trust proxy', 1) // trust first proxy
app.use(session({
secret: 'asdasdsada',
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}))
// required for passport
app.use(passport.initialize());
app.use(passport.session({
secret: 'adsdssa',
name: 'sadasd',
proxy: true,
resave: true,
saveUninitialized: true
}));
这些是我正在使用的路线:
var LocalStrategy = require('passport-local').Strategy;
var SlackStrategy = require('passport-slack').Strategy;
var User = require('../models/index').User;
var mysql = require('mysql');
var connection = mysql.createConnection({
host : process.env.MYSQL_HOST,
user : process.env.MYSQL_USER,
password : process.env.MYSQL_PASSWORD,
database : process.env.MYSQL_DB
});
module.exports = function(passport) {
passport.serializeUser(function(user, done) {
console.log('-----------serialize');
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
console.log('----------deserialize');
Model.User.findOne({
where: {
'id': id
}
}).then(function (user) {
if (user == null) {
done(new Error('Wrong user id.'));
}
done(null, user);
})
});
passport.use('slack', new SlackStrategy({
clientID: process.env.SLACK_ID,
clientSecret: process.env.SLACK_SECRET,
callbackURL: process.env.SLACK_REDIRECT,
scope: "incoming-webhook users:read"
},
function(accessToken, refreshToken, profile, done) {
var values = {
where: { slack_id: profile.id },
defaults: {slack_id: profile.id, name: profile.displayName}
};
User.findOrCreate(values)
.spread(function(user, created) {
return done(null,user);
});
}
));
答案 0 :(得分:2)
我遇到了同样的问题并解决了它。
只需删除
secure: true
这样的会议
//set session
app.use(session({
secret: 'asdasdsada',
resave: false,
saveUninitialized: true
}))
它应该工作也可以在这里看到护照本地的简单例子 https://github.com/passport/express-4.x-local-example