🚀

Nuxt.jsでWebアプリケーション開発メモ9

に公開

概要

tokenをlocalstorage保存ではなくhttpOnlyのCookie保存方式に変更する。
なんか色々不備があったのでいったんコミットしたがresetしてやりなおした

プロンプト9(ボツバージョン)

# 命令9
tokenをlocalstorageではなくhttpOnly Cookie方式に変更してください。

プロンプト9(やりなおし)

# 命令9(やりなおし)
tokenをlocalstorageではなくhttpOnly Cookie方式に変更してください。
- cookieへの保存はDjango側で実施してください。(httponlyあり)
- nuxt側では読み取りのみとします。
- jwtにis_adminの情報を追加してください。
    - このあと、nuxt側でページ遷移の権限チェックをjwtのペイロードで実施する想定(まだやらなくてよい)です。必要と思われる情報は全部ペイロードに含むようにしてください。

対応内容

バックエンド(Django)

  • ログイン時にJWTトークンをCookieに保存する。
  • REST API実行時にトークンをCookieから読み取るためにカスタムJWTAuthenticationを実装。

フロントエンド(Nuxt)

  • Nuxt側ではJWTは読み取りのみ実施。
  • middlewareで権限チェックする際、SSR処理、CSR処理の両方で動いてしまう。useCookieでトークンを読み取れるのはSSR処理時のみなのでimport.meta.serverチェックでSSR時のみ動作するようにした。
    • SSR処理でCookieから権限情報を取得して、CSR処理側で情報共有するためuseStateを使用した。
  • ログインしたとき、ヘッダの右上アイコンが表示されないデグレ発生。
    • → middlewareでCSR処理時にトークン取得できないので権限情報が正しく反映されない。
      • → ログインのレスポンスでトークン取得できるのでその情報を使うようにした。(Claude Code以外と見落とし多い。

ソース差分

フロントエンド

バックエンド


→ Nuxt.jsでWebアプリケーション開発メモ10

Discussion