はい、今回はLaravel8.0系でログアウトする時にレスポンスデータとしてtokenを返したいと思ったので、リクエストヘッダーに入っていたtokenを取得してみようと思います!
sanctumを使うと、Bearer使うんでログアウト時にはリクエストヘッダーにbearer token入れてリクエストが来ます。
ということでこのbearer tokenを取得しましょう。
Table of Contents
解決したいこと
requestのパラメータに入っていたら、$request->keyで取得できるんで、問題はありませんでした。
しかしリクエストヘッダーの値はどうして取得したらいいんだろ?ってなったんでリクエストヘッダーの値の取得方法がわからない問題を解決しましょ。
解決方法1 getallheaders()メソッドを使う
全てのHTTPリクエストヘッダを取得するgetallheaders()を使ってみましょう。
いったんgetallheaders()では何を取得できるのか見てみる。
{
"Authorization": "Bearer 154|ByrNaGc8WIYmHQDja3pMfBIIV0NE9QVfbnhhktSp",
"User-Agent": "PostmanRuntime/7.28.4",
"Accept": "*/*",
"Postman-Token": "a3ecwwfea5-a23f-wgeraf0f-9258-94bewa72a13a1",
"Host": "127.0.0.1:8000",
"Accept-Encoding": "gzip, deflate, br",
"Connection": "keep-alive",
"Content-Length": "0"
}
Code language: JSON / JSON with Comments (json)
POSTMAN使っているからuser-agentはPOSTMANだなーとか、色々かえってきてますね。
ただ、今回欲しいのはAuthorizationの値だから以下の感じで取得してみる。
//header変数にheaderの内容全て詰め込む
$header = getallheaders();
//$headerの中のAuthorizationだけ返す
return $header['Authorization'];
Code language: PHP (php)
ほい、そしたらこんなのが返ってくる↓
Bearer 154|ByrNaGc8WIYmHQDja3pMfBIIV0NE9QVfbnhhktSp
完璧ですなーということでgetallheaders()を使っての取得方法はこれでおk
解決方法2 $requestから取得する
いや、結局$requestから取得できるんかい、、、
って感じですが。以下のようにして取得できるそうです。
//取得
$request->header('Authorization');
//tokenを返す
return $request->header('Authorization');
Code language: PHP (php)
ほい、返ってきた値は、解決方法1とおんなじです。
まとめ
今回は簡単な問題でしたね~
伝えたい人に届ける技術記事の書き方←を意識したら結構読みやすい記事になった気がする。 あざまs