Open5

NextAuth.jsにおけるSessionの更新

kage1020kage1020

Sessionのメールアドレスや名前,追加で持たせている情報を更新したときクライアントのSessionを更新したいときがあると思う.
しかし,JWTモードではセッション情報はサインイン時の情報を保持し続けるためデータベースなどを更新してもクライアントは更新しない.
データベースモードでは更新するすべがあるらしいが公式は声を大にして紹介できるものではないっぽい.

https://github.com/nextauthjs/next-auth/discussions/3941#discussioncomment-2165271
https://next-auth.js.org/configuration/events#updateuser

kage1020kage1020

NextAuthの仕様上更新はあきらめざるを得ないようで,セキュリティ的に考えて正攻法で行うのは断念.

kage1020kage1020

ではどうするのかというと,グリッチというほどでもないがもう一度サインイン処理をして強制的にデータベースを参照させればいい.
サインインがCredentialsの場合には完全に裏側で処理を,OAuthを使っている場合にはもう一度認可処理をかませれば更新される.

kage1020kage1020

「変更を反映するにはもう一度サインインする必要があります」みたいな文言を添えればいかにも古臭い認証システムの出来上がり.