ExpressJSセッションを使用すると、セッションCookieを保持できます。cookieParserとセッションストアが必要です。ただし、このExpressJS機能を拡張したくない場合(これは私がメッセージから理解していることです)、トークンまたは秘密の一時文字列を使用して独自のセッションを管理する必要があります。
ExpressJSセッションを使用することを強くお勧めしますが、これはExpressJSCookieなしで使用する方法です。
- ログインするたびに、一意のトークンを作成し、後で検索できるように保存します。
- リクエストごとに、クライアントからそのトークンを送信し、サーバーで確認します。トークンが無効な場合は、ログインにリダイレクトします
ログインコードの例は次のとおりです。
app.post("/login", function(req, res) {
if(req.body.username && req.body.password) {
// check username and password
if(authenticated) {
// create a token and store it with the current date (if you want it to expire)
var token = generateAndStoreRandomString(req.body.username);
res.redirect("http://your.domain/path?token=" + token);
return;
}
// Do something if username or password wrong
}
// Do something if no username or password
});
今、すべての要求で:
app.get("somePath", function(req, res) {
if(!req.query.token) {
res.redirect("http://your.domain/login");
return;
}
// Check token in database, if it exists and it hasn't expired
if(!authenticated) {
res.redirect("http://your.domain/login");
return;
}
// The user is authenticated. Do the actions required by "somePath"
});
期限切れのトークンは最終的には合計されるため、プロセスで時々クリーンアップするようにしてください。ExpressJS cookieParserとセッションストアを使用したい場合は、たくさんの記事と例があります。それらに問題がある場合は、別の質問を投稿してください。
繰り返しますが、ExpressJSセッションを使用してみてください。httpsの代わりにhttpを使用すると、このメソッドは簡単に乗っ取られる可能性があります。