【Golang】リクエストスコープの値をcontextに渡す

0

2022年04月17日 12:49

contextの役割の1つにリクエストスコープの値を渡すというものがあります。リクエストスコープの値はJWTなどに含まれるユーザーの情報などが挙げられます。その流れについて実例を書いてみました。

下記はリクエストスコープを渡す流れになります。

  1. ミドルウェアでuserIDをcontextにセット
  2. controllerでcontextからuserIDを取得する

contextに値をセット・取得するutilの実装

contextに値をセット・取得する場合はunexportなkeyを定義することでタイプセーフに、予期しない場所でのセット・取得がされないようにすることが推奨されています。(参考)
img

SetUserIDGetUserIDの動作はこちらからもご確認いただけます。

1. ミドルウェアでuserIDをcontextにセット

認証トークンはFirebaseのAdmin Auth APIを利用して取得したIDトークンを利用します。
middlewareでリクエストのAuthorizationからIDトークンを取得します。(IDトークンはJWTと同様の形式で情報を保持しています)

img

2. controllerでcontextからuserIDを取得する

あとはhandlerもしくはcontrollerでcontextからuserIDを取得するだけです!
img

以上、リクエストスコープをcontextで渡す方法についてでした!

# Go
# Firestore
# Firebase
0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。

-

ランク

目次を見る