前のページではあるユーザがログインの POST メソッドを利用して新規のトークンを発行しました.現時点の設定では発行されたトークンに有効期限はありません.したがって,ログインするたびに新たなトークンが発行され,どのトークンでも利用することができます.
確認のために,ユーザ a@sample.com が3度トークンを発行し,ユーザ b@sample.com が2度トークンを発行する操作を行います.
C:\Users\Rinsaka>curl -X POST -d "email=a@sample.com" -d "password=abc" http://192.168.56.101:8000/api/login/ ⏎ {"user":{"id":1,"name":"A. Sample","email":"a@sample.com","email_verified_at":null,"created_at":"2023-11-02T15:01:01.000000Z","updated_at":"2023-11-02T15:01:01.000000Z"},"token":"2|DD4eCA11Zhj8XSzfQHhXJs4FHSiFFpZikIO1XonV9457a90c"} C:\Users\Rinsaka>curl -X POST -d "email=a@sample.com" -d "password=abc" http://192.168.56.101:8000/api/login/ ⏎ {"user":{"id":1,"name":"A. Sample","email":"a@sample.com","email_verified_at":null,"created_at":"2023-11-02T15:01:01.000000Z","updated_at":"2023-11-02T15:01:01.000000Z"},"token":"3|kTUo7hb4cSyadIDWLQtqScjuypUiBA7PYFdh0Zwd3078be8b"} C:\Users\Rinsaka>curl -X POST -d "email=a@sample.com" -d "password=abc" http://192.168.56.101:8000/api/login/ ⏎ {"user":{"id":1,"name":"A. Sample","email":"a@sample.com","email_verified_at":null,"created_at":"2023-11-02T15:01:01.000000Z","updated_at":"2023-11-02T15:01:01.000000Z"},"token":"4|f9PXJ1iJ9yvF5qZ3E8a7QMGOmNv8XmTZDtzo3TrEd52f3ef1"} C:\Users\Rinsaka>curl -X POST -d "email=b@sample.com" -d "password=abc" http://192.168.56.101:8000/api/login/ ⏎ {"user":{"id":2,"name":"B. Sample","email":"b@sample.com","email_verified_at":null,"created_at":"2023-11-02T15:02:01.000000Z","updated_at":"2023-11-02T15:02:01.000000Z"},"token":"5|VPQqgvAQ4qWoWZEgzq7iVPdzPtfff4ueUiGrLFmLa084fa76"} C:\Users\Rinsaka>curl -X POST -d "email=b@sample.com" -d "password=abc" http://192.168.56.101:8000/api/login/ ⏎ {"user":{"id":2,"name":"B. Sample","email":"b@sample.com","email_verified_at":null,"created_at":"2023-11-02T15:02:01.000000Z","updated_at":"2023-11-02T15:02:01.000000Z"},"token":"6|QRWYkRNgeD0vYpJhI6MDBAQwKGiSqog3RxMFTMk2f636b5d6"} C:\Users\Rinsaka>
発行されたトークンは ID|48文字の英数字
の形式になっていることを確認してください.
次に,データベースの personal_access_tokens テーブルでもトークンを確認します.tokenable_id
にはトークンを発行したユーザのIDが格納されています.まだ利用されたことのないトークン(ID:2〜6)には created_at
と updated_at
に同じ日時(作成日時)が記録されています.またこれまでに利用されたことのあるトークン(ID:1)には最後に利用された日時が last_used_at
に記録され,updated_at
にも同じ日時が記録されています.
sqlite> SELECT * FROM personal_access_tokens; id|tokenable_type|tokenable_id|name|token|abilities|last_used_at|expires_at|created_at|updated_at 1|App\Models\User|1|comments-api-token|0c94ec67889ac45b2963e7876260ce7452c8b3880963f5eb2a72aa1019e11324|["*"]|2023-12-18 10:32:16||2023-12-18 10:18:54|2023-12-18 10:32:16 2|App\Models\User|1|comments-api-token|c5ccb247cc02c22f02bf3686d950a6ccb0b46166a8a5199370bade7ab97b8c2d|["*"]|||2023-12-18 10:40:05|2023-12-18 10:40:05 3|App\Models\User|1|comments-api-token|096f70dbc1595a5baa49804296f635236d03c201455ad02ad065918069f657a5|["*"]|||2023-12-18 10:40:11|2023-12-18 10:40:11 4|App\Models\User|1|comments-api-token|e9923d7abd921bd287a85edffc9263442f906788a44c8529ba53a720aac9a70b|["*"]|||2023-12-18 10:40:13|2023-12-18 10:40:13 5|App\Models\User|2|comments-api-token|4feeb7e6f828143619967b0a214f3c1675041752037cf0a01e52ccdf906839dc|["*"]|||2023-12-18 10:40:20|2023-12-18 10:40:20 6|App\Models\User|2|comments-api-token|fdbb7bde6985c84c7139090bd7cfe5d1177a911e7af220b83fa31f5dbea8b1ce|["*"]|||2023-12-18 10:40:24|2023-12-18 10:40:24 sqlite>
ID = (1, 2, 4, 5) のトークンを順番に利用して,個別コメント情報を取得します.
C:\Users\Rinsaka>curl -H "Authorization: Bearer 1|LKP6Mb8mQQ7d0TJpRoxpsk8NoWFeDJvEPcNPu0gscf82b730" http://192.168.56.101:8000/api/comments/1/ ⏎ {"comment":{"id":1,"title":"最初のコメント","body":"最初のコメントです!","updated_at":"2023-10-02T10:10:10.000000Z"}} C:\Users\Rinsaka>curl -H "Authorization: Bearer 2|DD4eCA11Zhj8XSzfQHhXJs4FHSiFFpZikIO1XonV9457a90c" http://192.168.56.101:8000/api/comments/1/ ⏎ {"comment":{"id":1,"title":"最初のコメント","body":"最初のコメントです!","updated_at":"2023-10-02T10:10:10.000000Z"}} C:\Users\Rinsaka>curl -H "Authorization: Bearer 4|f9PXJ1iJ9yvF5qZ3E8a7QMGOmNv8XmTZDtzo3TrEd52f3ef1" http://192.168.56.101:8000/api/comments/1/ ⏎ {"comment":{"id":1,"title":"最初のコメント","body":"最初のコメントです!","updated_at":"2023-10-02T10:10:10.000000Z"}} C:\Users\Rinsaka>curl -H "Authorization: Bearer 5|VPQqgvAQ4qWoWZEgzq7iVPdzPtfff4ueUiGrLFmLa084fa76" http://192.168.56.101:8000/api/comments/1/ ⏎ {"comment":{"id":1,"title":"最初のコメント","body":"最初のコメントです!","updated_at":"2023-10-02T10:10:10.000000Z"}} C:\Users\Rinsaka>
その結果データベースが次の様に更新されました.やはりトークンを利用して API にアクセスするとその日時が last_used_at
と updated_at
に記録されることがわかります.また,有効期限は登録されていないことも確認してください.トークン有効期限の設定は後ほど行います.
sqlite> SELECT * FROM personal_access_tokens; ⏎ id|tokenable_type|tokenable_id|name|token|abilities|last_used_at|expires_at|created_at|updated_at 1|App\Models\User|1|comments-api-token|0c94ec67889ac45b2963e7876260ce7452c8b3880963f5eb2a72aa1019e11324|["*"]|2023-12-18 10:43:45||2023-12-18 10:18:54|2023-12-18 10:43:45 2|App\Models\User|1|comments-api-token|c5ccb247cc02c22f02bf3686d950a6ccb0b46166a8a5199370bade7ab97b8c2d|["*"]|2023-12-18 10:43:52||2023-12-18 10:40:05|2023-12-18 10:43:52 3|App\Models\User|1|comments-api-token|096f70dbc1595a5baa49804296f635236d03c201455ad02ad065918069f657a5|["*"]|||2023-12-18 10:40:11|2023-12-18 10:40:11 4|App\Models\User|1|comments-api-token|e9923d7abd921bd287a85edffc9263442f906788a44c8529ba53a720aac9a70b|["*"]|2023-12-18 10:43:58||2023-12-18 10:40:13|2023-12-18 10:43:58 5|App\Models\User|2|comments-api-token|4feeb7e6f828143619967b0a214f3c1675041752037cf0a01e52ccdf906839dc|["*"]|2023-12-18 10:44:05||2023-12-18 10:40:20|2023-12-18 10:44:05 6|App\Models\User|2|comments-api-token|fdbb7bde6985c84c7139090bd7cfe5d1177a911e7af220b83fa31f5dbea8b1ce|["*"]|||2023-12-18 10:40:24|2023-12-18 10:40:24 sqlite>