アクセストークン
headerにアクセストークンを持たせることでApiを叩くことができる。
リフレッシュトークン
古いアクセストークン
もうAPIを叩くことができない。
しかし、リフレッシュトークンを渡すことで新しいアクセストークンを受け取ることができる。
再度ログインする必要がない。
流れ
アクセストークンを得る
ログインする。
レスポンス↓
{
expired_at: "2022-08-30 17:10:03"
expires_in: 60
token: "eyAAAAAAAAAAAAAAAAAAAAAAA.eyBBBBBBBBBBBBBBBBBBB.cccccccccccccccccccccccccccc"
token_type: "bearer"
}
アクセストークンが切れる
APIを叩くと401が返ってくる。
レスポンス↓
{
error: Unauthorized
}
リフレッシュする
/api/refresh
などのAPIを叩くと、新しいtokenが返ってくる。
ので古いtokenと交換する。
ログインをし直さないでも、tokenが更新される。
{
expired_at: "2022-08-30 17:10:03"
expires_in: 60
token: "eyAAAAAAAAAAAAAAAAAAAAAAA.eyXXXXXXXXXXXXXXX.qqqqqqqqqqqqqqqqqqqq"
token_type: "bearer"
}
環境設定
.envでアクセストークンの有効期限と、リフレッシュトークンの有効期限を変更することができる
lcobucci/jwtだと、
JWT_TTL(アクセストークンの有効期限)、JWT_REFRESH_TTL(リフレッシュトークンの有効期限)
で設定する。
まとめ
アクセストークンが入場チケットで、
リフレッシュトークンが古い入場チケットで、チケット売り場で入場チケットと交換できる券みたいな感じかな。(そんなのないけど)
両方有効期限をつけることができるよ、という感じです。