Google Chrome拡張機能のポップアップで、node.js + express.jsサーバーからページを読み込みます。ページには、私はこのようにreq.session.user
の状態に応じて変更をロードします。Express.js + Google Chrome拡張機能:セッションの保存は可能ですか?
app.get('/', function(req, res){
if(req.session.user){
res.render(__dirname + '/pages/base.jade', {});
}
else{
res.render(__dirname + '/pages/login_register.jade', {});
}
});
req.session.user
がnullの場合、私は、ユーザーがログインを行うか、登録可能なページを送信します。彼/彼女は、ログインをした場合、これは、サーバーで何が起こるかです:
app.post('/login', function(req, res){
var user = {};
user.username = req.body.username;
user.password = req.body.password;
checkLogin(user, function(foundUser){
//login correct
console.log("login!");
req.session.user = foundUser;
res.render(__dirname + '/pages/base.jade', {
});
});
});
だから、正しくreq.session.user
ユーザがログインすると、現在のユーザーの資格情報を使用して設定する必要があります。問題は、いったんログインしてからChrome拡張機能のポップアップを閉じると、再び開くときにログインページが表示されることです。
私の質問です:popupはexpress.jsサーバーのセッションストレージをサポートしていますか?はいの場合、私のコードに何か問題があります。誰かが間違っていることを指摘できますか?ありがとう。
編集:私はまだそれがどのように動作するかの深い理解を持っていないので、私は、ここに冗長な何かをやっているかもしれません
var app = express.createServer(
express.logger(),
express.cookieParser(),
express.session({ secret: 'keyboard cat' })
);
app.use(express.cookieParser());
app.use(express.session({ secret: "keyboard cat" }));
app.set('view engine', 'ejs');
app.set("view options", { layout: true });
:
これはどのように私のセットアップサーバーです。
Express(実際には接続)セッションはCookieベースです。あなたのアプリはどのように設定されていますか? '(express.cookieParser())'と 'use(express.session())'を使いますか?クッキーが機能していることを確認してください。おそらく、クッキーは拡張機能では別の方法で扱われます。 –
サーバーの設定で投稿を編集しました。ご覧のとおり、 'express.session()'と 'express.cookieParser()'を使います。 – Masiar
これは間違いなく冗長です。私はいつも 'express.createServer()'をパラメータなしで実行し、すべてのミドルウェアを '.use'します。それを試して、それが修正されているかどうか確認してください! –