即使启用了CORS,NodeJs,ExpressJs,PassportJs,isAuthenticated也会返回null

时间:2015-07-10 21:41:19

标签: javascript angularjs node.js cors passport.js

我的应用程序在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());

我错过了什么吗?

0 个答案:

没有答案