首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

智能家居系統加入使用者帳號體系:伺服端資料庫設計與客戶端認證流程

     編輯:程式設計疑難解答

資料庫設計

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)
);

註冊流程

  1. 客戶端輸入帳號密碼 → HTTPS POST /api/register。
  2. 伺服端:bcrypt.hash(password, salt) → 存入 users。
  3. 回傳註冊成功,引導登入。

登入流程

  1. 客戶端 POST /api/login(帳號、密碼)。
  2. 伺服端驗證 bcrypt.check(password, hash),成功簽發 JWT(含 user_id, exp)。
  3. 客戶端儲存 JWT,後續請求攜帶 Authorization: Bearer <token>。

操作記錄

每次裝置控制請求解析 JWT 取得 user_id,寫入 device_logs,實現「誰在何時操作了什麼裝置」。

參考實作:Java + Android 登入註冊完整範例

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved