LoginSignup
31
32

More than 5 years have passed since last update.

認証情報はユーザ情報と分離すべきだった

Last updated at Posted at 2014-10-22

DB構造の整理を怠ったがために、トラブルった話

出来上がった構造

before.png

USER テーブル

  • id
  • name
  • login_id
  • password
  • deleted

あるべきであった姿

after.png

USER テーブル

  • id
  • name
  • deleted

AUTH_INFORMATION テーブル

  • user_id
    • FOREIGN USER.id
  • login_id
    • UNIQUE
  • password

起こった問題

「別の人がログインしてるんだけど」

  • ログインID、パスワードを間違いなく入力している
  • 表示されるのは別人の名前
  • deletedカラムで論理削除したデータとlogin_idが重複していた

運用回避

  • もともと、ユーザではなくシステム担当者がinsertする運用だった
  • データ追加前にlogin_idでselectしてチェックする運用に

結論:分けときましょう。

AUTH_INFORMAION にあるデータはすべて有効で、login_idがユニークであれば、Insert時に怒られるのでこんな問題が起こることはなかった。

31
32
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
32