我一直在試驗Ember.js和Node.js,並且遇到了問題。我使用標準的Express.session
系統在服務器上保護了我的API路由,但是當這些API服務於Ember.js應用程序時,我遇到了一個問題。由於Ember應用程序無法將值存儲在req.session
中,因此我的應用程序無法運行。我應該如何做我的身份驗證,以便我仍然可以會話保護我的API?下面是我的一些當前服務器登錄代碼:Ember.js + Node.js身份驗證/會話不能使用Express.Session
一個 「檢查登錄」 功能:
TypeError: Cannot read property 'user' of undefined
中間件設置:當灰燼發出請求
var checkLogin = function(req, res, callback) {
if (req.session.user) {
callback();
} else {
res.send({error: "AuthRequired"});
}
};
錯誤:
app.configure(function() {
app.use(express.bodyParser());
app.use(express.static(__dirname + '/static/'));
app.use(express.cookieParser(<SECRET>));
app.use(express.session());
//to not care about invalid JSON requests
app.use(function(err, req, res, next) {
if (err.message == 'invalid json') {
next()
} else {
next(err)
}
});
});
您可以發佈您的快速應用程序配置(中間件等)嗎?用中間件信息更新了 – robertklep
。 –
難道你是在你的路線之後宣佈你的中間件?否則,我不明白爲什麼'req.session'可能是未定義的(當客戶端不發送會話cookie時,仍然會創建'req.session',只是一個空的)。 – robertklep