⑥ https://chat.openai.com/share/33656d3d-591a-4eeb-878d-4134ca30d6b2
Chat GPTの回答
ログイン後10分で自動的にログアウトするようにしたい場合は、セッションの設定部分を修正する必要があります。具体的には、cookie オブジェクト内で maxAge プロパティを設定し、セッションの有効期限を設定することでこれを実現できます。以下の修正済みコードは、ログイン成功から10分後にセッションが自動的に終了するように設定しています。
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const bcrypt = require('bcrypt');
require('dotenv').config();
const app = express();
const port = 3000;
// データベース接続設定
const pool = mysql.createPool({
connectionLimit: 10,
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME
});
// キャッシュを無効にするミドルウェア
app.use((req, res, next) => {
res.header("Cache-Control", "no-store, no-cache, must-revalidate, private");
next();
});
// セッションの設定
app.use(session({
secret: 'your_secret_key',
resave: false,
saveUninitialized: true,
cookie: {
secure: false, // 安全な通信が必要な場合はtrueにする
maxAge: 600000 // 10分 (10 minutes in milliseconds)
}
}));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(express.static('public'));
app.get('/login', (req, res) => {
res.sendFile(__dirname + '/public/login.html');
});
app.post('/register', (req, res) => {
const { username, password } = req.body;
const saltRounds = 10;
bcrypt.hash(password, saltRounds, function(err, hash) {
pool.query('INSERT INTO users (username, password) VALUES (?, ?)', [username, hash], (err, results) => {
if (err) throw err;
res.redirect('/login');
});
});
});
app.post('/login', (req, res) => {
const { username, password } = req.body;
pool.query('SELECT password FROM users WHERE username = ?', [username], (err, results) => {
if (err) throw err;
if (results.length > 0) {
bcrypt.compare(password, results[0].password, function(err, result) {
if (result) {
req.session.loggedin = true;
req.session.username = username;
res.redirect('/dashboard');
} else {
res.send('ユーザー名またはパスワードが間違っています!');
}
});
} else {
res.send('ユーザー名またはパスワードが間違っています!');
}
});
});
app.get('/logout', (req, res) => {
req.session.destroy(err => {
if (err) {
console.log(err);
res.status(500).json({ success: false });
} else {
res.json({ success: true });
}
});
});
app.get('/dashboard', (req, res) => {
if (req.session.loggedin) {
res.sendFile(__dirname + '/private/dashboard.html');
} else {
res.redirect('/login');
}
});
app.listen(port, () => {
console.log(`サーバーがポート ${port} で稼働しています`);
});
このコードでは、session ミドルウェアの cookie 設定に maxAge を追加しました。これにより、セッションクッキーが生成されてから10分後に自動的に期限切れになります。安全な HTTPS 通信を使用している場合は、secure: true に設定してください。