我想在RESTful环境中设置护照,并且无法让用户序列化到会话数据中。虽然登录和注册工作很好。你可以在RESTFUL环境中使用NodeJs Passport Sessions吗?
我或多或少地遵循scotch.io的教程,但我做了一些调整,以便通过RESTful API工作。
概括地说,这是我的服务器设置:现在
var express = require("express"); // v 4.8.5
var cookieParser = require("cookie-parser"); // v 1.3.3
var bodyParser = require("body-parser"); // v 1.9.0
var session = require("express-session"); // v 1.8.2
var passport = require("passport"); // v 0.2.1, passport-local is v 1.0.0
var app = express();
require("./config/Passport")(passport);
app.use(morgan('dev'));
app.use(cookieParser(secret));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
app.use(session({secret:secret, resave:true, saveUninitialized:true, cookie:{httpOnly: false, secure:false, maxAge:cookie_max_age}}));
app.use(passport.initialize());
app.use(passport.session());
app.use(less(publicPath, {compiler:{compress:false}}));
app.use(express.static(publicPath));
var router = express.Router();
require(appBase + "Routes")(router, passport);
app.use('/api', router);
var server = app.listen(8088);
,在我的路由器,我已经定义了登录路径如下:
router.post("/login", function(req, res, next)
{
passport.authenticate("local-login", function(error, user, info)
{
if(error) return next(error);
if(!user) return response.send({success:false, message:info.message});
return response.send({success:true, message:"Login successful.", user:user});
})(request, response, next);
});
我想是这里简单介绍一下,但是我的用户序列化和反序列化函数中也有控制台痕迹,并且它们没有被击中。我也有一些日志记录,告诉我会话变量发生了什么,而且几乎没有任何显示。 Cookie信息中有一个护照变量,但它是空的。
我猜我的问题在于,我没有使用默认的默认重定向机制,该默认情况下应该使用护照,但到目前为止,我一直无法弄清楚它到底是什么。我的第二个猜测是cookie和会话的东西没有正确设置。 scotch.io教程是为一个旧版本的express而编写的,我不得不做出更新以使所有内容保持最新。
我知道我是从文档中缺少的东西:)这工作就像一个魅力。谢谢你的帮助! – Alex 2014-09-29 16:15:57