$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ゲスト支援における認証状態管理で気を付けたこと
Search
Tadashi Nakajima
December 13, 2025
0
9
ゲスト支援における認証状態管理で気を付けたこと
株式会社CAMPFIREにて、2025年12月にリリースされたエクスプレス支援機能にまつわる発表資料。
Tadashi Nakajima
December 13, 2025
Tweet
Share
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
0
98
Designing for Timeless Needs
cassininazir
0
87
Building the Perfect Custom Keyboard
takai
1
660
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
110
Mobile First: as difficult as doing things right
swwweet
225
10k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
Designing Experiences People Love
moore
143
24k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.4k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
860
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
160
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
95
Transcript
未ログイン支援における認証状態管理について 「支援」を止めない技術。虎ラボ | CAMPFIRE 開発の裏側をLT会 ゲスト支援における認証状態管理で気を付けたこと 株式会社CAMPFIRE / 中島 禎
自己紹介 中島 禎(ナカジマ タダシ) 株式会社CAMPFIRE 2024 年10 月入社 / 5 社目
ソフトウェアエンジニア(BE メイン) 趣味:漫画、アニメ(ガチアクタにハマり中) GitHub: @tadasi / X: @tadas1n 会社ではこんな感じで楽しくやってます
エクスプレス(Apple Pay )支援機能 リリース:2025 年12 月 施策としてやりたかったこと 「支援者の熱意は支援を決めた時が一番高く」 、 ログイン・会員登録タイミングでの離脱が多い
ため、その熱を絶やさずに未ログイン状態で簡 単に支援できるようにしたい
機能概要① iPhone / Safari でのみ利用できる ユーザーが未ログイン状態で、Apple Pay の決済手段を選択できる クレジットカード・メールアドレスな どの個人情報は
Apple Pay のハーフ モーダルを通じて連携される 電源ボタンをダブルクリックすること でエクスプレス決済が行われ、簡単に 支援できる!
機能概要② 支援完了画面には限定公開 URL トークンを付与しており、有効期限 を設定している(メール送信によるトークンの再発行可能) 限定とは言え公開 URL なので、メールアドレスなどの個人情報はマ スクしている 画面下部の認証メール受け取りリンクやボタン押下後、認証メール
中リンク押下により、特定機能にアクセスできるゲスト認証状態と なる ゲスト認証状態となれば、自身の支援情報の詳細確認・一部編集や メッセージ機能などを利用できるようになる
未ログイン支援のサービス的価値 (例)吉村大阪府知事による「阪神タイ ガース優勝記念パレード」プロジェクト告 知文言にあった「事前の会員登録」が不 要に!!
ではここで… 夜も眠れない問題とは?
Switch2 がいつまでも手に入らないこと…
ではなく
個人情報漏洩などのセキュリティリスク
気を付けたこと①:個人情報管理 個人情報の取り扱いや認証フローに細心の注意を払って設計した上で、リーガルチェックもお願いした 未ログイン状態で他のユーザー情報を引け得るようなセキュリティリスクのあることは絶対にしない 支援完了画面では、メールアドレスなどの個人情報をマスクするなどして秘匿した
気を付けたこと②:ゲスト認証管理 Apple Pay は事前のメール送達が担保されないことから、支援完了画面からのメール認証フローを設けること で、安全・かつ限定的な機能アクセスを可能にした ゲスト認証状態をセッションで管理し、ログイン認証との排他制御を入れた ゲスト認証による既存機能の利用時には、コントローラー内でログイン認証との権限が混じり合わないよう特 に注意した 期限切れセッションを常に監視し、期限切れであれば即座に削除するようにした
ゲスト認証管理の実装サンプル①:ゲスト認証モジュール ゲスト認証に関する関心事を Concern に切り出し、必要なメソッドの呼び出しで利用できるようにした 1 module GuestAuthentication 2 extend ActiveSupport::Concern
3 4 included do 5 # devise のヘルパーメソッドである current_user を直接上書くようなことはせず、排他的に認証情報を引けるようにした 6 def current_user_or_guest 7 return current_user if current_user 8 return unless session[:guest_token] 9 10 GuestAuthToken.find_valid_guest(token: session[:guest_token]) 11 end 12 end 13 end
ゲスト認証管理の実装サンプル②:セッションの排他制御 ゲスト認証状態とログイン認証状態の排他制御を行い、共存させないようにした 他にも、API 単位で適宜必要な制御を加えた 1 class BaseController < ActionController::API 2
before_action :delete_guest_auth_session_when_expired 3 before_action :delete_guest_auth_session_when_logged_in 4 5 protected 6 7 def delete_guest_auth_session_when_expired 8 ::Guests::AuthSession.new(session).delete_when_expired 9 end 10 11 # ログイン状態との排他制御を行う - ログイン認証とゲスト認証が共存する場合は、ゲスト認証を削除しログイン認証を優先させる 12 def delete_guest_auth_session_when_logged_in 13 ::Guests::AuthSession.new(session).delete if user_signed_in? 14 end 15 end
今後:ミッション実現のため、さらに未ログインでの決済手段を拡充予定
まとめ 表したい認証状態が複数発生する場合は、権限が混じり合わないよう適切な管理・排他制御を 各種トークンやセッションは、適切な期限管理を 個人情報の取り扱いや認証状態の管理では法務的観点を忘れず、細心の注意を
ご清聴ありがとうございました!!