LoginSignup
5
6

More than 3 years have passed since last update.

Laravel Sanctumお試し

Last updated at Posted at 2020-05-13

プロジェクトの作成とSanctumの導入

$ laravel new hello-sanctum
$ cd hello-sanctum
  • Sanctumのインストール
$ composer require laravel/sanctum
  • configファイルとmigrationファイルの作成
$ php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
  • .env内のDBパラメータを任意の値に設定
.env
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
  • migrationの実行
$ php artisan migrate
  • ダミーユーザーを作成
$ php artisan tinker
>>> factory(App\User::class)->create()
=> App\User {#3054
     name: "Dr. Gerry Jast",
     email: "mschroeder@example.com",
     email_verified_at: "2020-05-13 11:00:44",
     updated_at: "2020-05-13 11:00:44",
     created_at: "2020-05-13 11:00:44",
     id: 1,
   }

Userモデルにトークン認証用の設定を追記

app/User.php
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

認証用のコントローラの作成

$ php artisan make:controller AuthController
app/Http/Controllers/AuthController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class AuthController extends Controller
{
    public function login(Request $request)
    {
        if (!Auth::attempt(request(['email', 'password']))) {
            return response()->json([
                'message' => 'Unauthorized'
            ], 401);
        }
        $accessToken = Auth::user()->createToken('authToken')->plainTextToken;
        return response()->json([
            'access_token' => $accessToken,
        ]);
    }
}

認証用ルートの作成

routes/api.php
// ログイン
Route::post('/login', 'AuthController@login');

// ユーザー情報の取得
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

お試し

  • ビルトインサーバーを起動
$ php artisan serve
  • ログインしてトークンを発行(Postman)
PostmanのHeaders
Content-Type:application/json
X-Requested-With:XMLHttpRequest
PostmanのBody(form-data)
email:mschroeder@example.com #ダミーユーザーを作成したときのemail
password:password

スクリーンショット 2020-05-13 21.15.52.png

  • 認証つきのURLにアクセス(Postman)
PostmanのHeaders
Content-Type:application/json
X-Requested-With:XMLHttpRequest
Authorization:Bearer access_token #ログインのリクエストで返却されたaccess_token

スクリーンショット 2020-05-13 21.22.08.png

その他

config/sanctum.php
'expiration' => 1, // これを設定すると有効期限(分)をつけれる
5
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6