CREATE TABLE users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) UNIQUE NOT NULL,
password_hash CHAR(60) NOT NULL, -- bcrypt
salt CHAR(16) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE device_logs (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
device_id VARCHAR(50) NOT NULL,
action VARCHAR(20) NOT NULL, -- 'ON', 'OFF', 'SET_TEMP'
params JSON,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
/api/register。bcrypt.hash(password, salt) → 存入 users。/api/login(帳號、密碼)。bcrypt.check(password, hash),成功簽發 JWT(含 user_id, exp)。Authorization: Bearer <token>。每次裝置控制請求解析 JWT 取得 user_id,寫入 device_logs,實現「誰在何時操作了什麼裝置」。