我的应用程序在Express中的服务器A上有一个前端/网站服务逻辑,在服务器B上有一个用Express端口写的POST端点的后端逻辑。
我已经将所有调用后端的AngularJs方法的相同设置为true。
在后端,我有这个
var cors = require('cors');
var whitelist = 'http://serverA.com';
var corsOptions = {
origin: whitelist,
methods: ['GET', 'POST', 'OPTIONS', 'PUT'],
allowedHeaders: ['Content-Type', 'Authorization'],
exposedHeaders: ['Content-Range', 'X-Content-Range'],
credentials: true
};
app.options('*', cors(corsOptions));
app.use(cors(corsOptions));
我尝试从客户端登录并登录成功并重定向到正确的页面,但Passport上的 isAuthenticated 方法返回false并将其重定向回登录页面。
您认为原因是会话未存储在客户端。 Cookie值似乎设置正确(Chrome开发工具。)
这是一些客户端代码。这是一种中间件方法,用于保护经过身份验证的用户的页面。
function authenticate_func(req, res, next) {
//return next();
if (req.isAuthenticated())
{
console.log("Login Successful");
return next();
}
console.log('Login Unsuccessful');
res.redirect('/');
};
以下是我使用的中间件及其使用顺序。
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
require('/local_strategy')(passport, my_sql);
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
我错过了什么吗?