背景
既に動いているRailsアプリケーションとfrontendの間にBFF用のnodeサーバを立てて、認証情報(currentUserIdの取得)はBFFで吸収させたい。
※ Session管理にCookie Storeを使っているRailsアプリケーションを想定しています。
書いた
RubyのMarshal.load
はRuby独自の機構なのでnode-marshalを利用した。
環境変数でRailsアプリケーションで使っているSECRET_KEY_BASE
を設定する必要がある。
expressのmiddlewareとして書いたので使うときは下のような感じになる。
import cookieParser from "cookie-parser"; import express from "express"; const COOKIE_NAME = "_sample_app_session_development" // middleware const app = express(); app.use(cookieParser()).use(setDecryptCookies(COOKIE_NAME));
参考にしました
encryption - How to decrypt a Rails 5 session cookie manually? - Stack Overflow
rails-cookie-parser/index.js at master · instore/rails-cookie-parser · GitHub