2021-4-29

認証ガードと通信の例外のハンドリングに関して

雑な技術メモ

認証ガード

  • 認証が必要な画面に未認証状態で入った際にリダイレクトする仕組み
  • 大きく分けて以下の2パターン
    • 通信が 401 返してきたらリダイレクト(アラートを出すのも良い)
    • 認証情報が無い状態で認証が必要な URL にアクセスした時点でリダイレクト
  • 両方実装するのが良いはず
    • 認証情報あるけど古いパターンとかあるし

通信が 401 返してきたらリダイレクト

  • 全通信に関して例外処理として仕組みを入れる必要があるので、共通処理に実装するのが良い
  • ただ、処理の上流で例外処理を実装すると、後続処理が実行されてしまう。
    • 例外処理しつつ例外の再スローするくらいしか案が思い浮かばない
  • なもんで、処理の最下流の共通処理で対処するのが良さそう
    • 401 以外の通信エラーに関しても、まとめて対処してトースト出すとかしたらいい
    • ただ、通信エラーを処理の中流で対処するパターンがあったりすると面倒
      • コンポーネントに通信エラーを表示するパターンとか
    • そもそも、画面の色々な場所で通信はするわけだが、それらをひっくるめてトーストに表示するのが本当にいいのかと言われると…?
      • そもそも、通信エラーはそんなに頻繁に発生するものか?
        • そんなはずはない、少ないケースであるならば多少わかりにくかろうが許容範囲では?
        • 通信エラーが多いようなら、まず通信エラーが多い状況を早急になんとかしないといけないよねっていう

認証情報が無い状態で認証が必要な URL にアクセスした時点でリダイレクト

  • 大前提として、認証が必要な画面と認証が不要な画面の URL がわかりやすく分けられている必要がある
    • 認証が必要な画面は /auth から始まるとか
  • フロントエンドフレームワークには認証ガードを実装するための仕組みが大体あるはずなので、それを使えばいい(Nuxt だと middleware だったりとか)