Rumah rangka kerja php Laravel Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan SPA dan API menggunakan Laravel Sanctum?

Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan SPA dan API menggunakan Laravel Sanctum?

Jun 13, 2023 pm 12:36 PM
laravel spa sanctum

Laravel Sanctum ialah pakej pengesahan ringan yang membolehkan anda melaksanakan pengesahan API dan pengesahan SPA (Aplikasi Halaman Tunggal) dengan mudah dalam aplikasi Laravel. Dalam artikel ini, kami akan meneroka cara menggunakan Laravel Sanctum untuk melaksanakan pengesahan SPA dan API.

Pertama, mari kita lihat apakah itu pengesahan SPA dan API.

Pensijilan SPA merujuk kepada aplikasi satu halaman yang tidak memuatkan semula keseluruhan halaman, tetapi menggunakan AJAX untuk meminta maklumat daripada pelayan web untuk mengemas kini sebahagian kandungan. Apabila menggunakan SPA, API perlu disahkan untuk memastikan bahawa hanya pengguna yang disahkan boleh mengaksesnya.

Pengesahan API merujuk kepada proses pengesahan permintaan API. Apabila pelanggan menghantar permintaan, API perlu mengesahkan bahawa permintaan itu adalah daripada pengguna yang dijangka, dengan itu memastikan titik akhir API hanya digunakan oleh pengguna yang disahkan.

Berikut ialah langkah cara menggunakan Laravel Sanctum untuk melaksanakan pengesahan SPA dan API:

1 Pasang Laravel Sanctum
Kami boleh menggunakan pengurus pakej komposer untuk memasang Laravel Sanctum. Jalankan arahan berikut dalam projek Laravel:

composer require laravel/sanctum
Salin selepas log masuk

2. Jalankan pemasang Laravel Sanctum
Laravel Sanctum menyediakan pemasang yang mengkonfigurasi aplikasi kami secara automatik semasa pemasangan. Kita boleh menjalankan pemasang ini menggunakan arahan berikut:

php artisan vendor:publish --provider="LaravelSanctumSanctumServiceProvider"
Salin selepas log masuk

3. Jalankan migrasi
Kita perlu menjalankan migrasi Sanctum untuk mencipta jadual pangkalan data yang diperlukan untuk menyokong operasi Sanctum. Jalankan arahan berikut:

php artisan migrate
Salin selepas log masuk

4. Konfigurasikan aplikasi
Kami perlu menambah Laravel Sanctum pada timbunan middleware kami:

'api' => [
    'middleware' => ['auth:sanctum'],
    'throttle:60,1',
    'prefix' => 'api',
    'namespace' => 'AppHttpControllersAPI',
],
Salin selepas log masuk

5. Keluarkan token pengesahan kepada pengguna
Dalam Laravel Sanctum, kita boleh menggunakan kaedah tokenCan untuk menyemak sama ada token mempunyai kebenaran API tertentu. Kami boleh mengeluarkan token pengesahan kepada pengguna menggunakan kaedah createToken:

use IlluminateHttpRequest;

/**
 * Store a newly created resource in storage.
 *
 * @param  IlluminateHttpRequest  $request
 * @return IlluminateHttpResponse
 */
public function store(Request $request)
{
    $user = User::find(1);
    $token = $user->createToken('token-name', ['server:update'])->plainTextToken;

    return response()->json([
        'access_token' => $token,
        'token_type' => 'Bearer',
    ]);
}
Salin selepas log masuk

Ini akan mencipta token untuk pengguna yang dipanggil 'token-name' dengan kebenaran pelayan:update.

6. Lindungi titik akhir API
Dalam pengawal kami, kami boleh menggunakan kaedah "perisian tengah" untuk melindungi titik akhir API:

public function update(Request $request, $id)
{
    if (!$request->user()->tokenCan('server:update')) {
        abort(403, 'Unauthorized');
    }

    // Update the server
}
Salin selepas log masuk

Dalam contoh ini, kami hanya membenarkan mereka yang mempunyai Pengguna dengan pelayan:kebenaran kemas kini mengakses kaedah kemas kini.

7. Menggunakan token pengesahan dalam SPA
Dalam SPA kami, kami boleh menggunakan arahan Sanctum @auth dan @csrf Blade untuk mendapatkan token pengesahan:

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Laravel</title>

    <!-- Fonts -->
    <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
    <script src="{{ asset('js/app.js') }}" defer></script>

    <!-- Styles -->
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">

    <!-- Meta -->
    <meta name="csrf-token" content="{{ csrf_token() }}">
</head>
<body>
    <div id="app">
        <nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
            <div class="container-fluid">
                <a class="navbar-brand" href="{{ url('/') }}">
                    {{ config('app.name', 'Laravel') }}
                </a>
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
                    <span class="navbar-toggler-icon"></span>
                </button>

                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                    <!-- Left Side Of Navbar -->
                    <ul class="navbar-nav mr-auto">

                    </ul>

                    <!-- Right Side Of Navbar -->
                    <ul class="navbar-nav ml-auto">
                        <!-- Authentication Links -->
                        @guest
                            <li class="nav-item">
                                <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
                            </li>
                            @if (Route::has('register'))
                                <li class="nav-item">
                                    <a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
                                </li>
                            @endif
                        @else
                            <li class="nav-item dropdown">
                                <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
                                    {{ Auth::user()->name }}
                                </a>

                                <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
                                    <a class="dropdown-item" href="{{ route('logout') }}"
                                       onclick="event.preventDefault();
                                                     document.getElementById('logout-form').submit();">
                                        {{ __('Logout') }}
                                    </a>

                                    <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
                                        @csrf
                                    </form>
                                </div>
                            </li>
                        @endguest
                    </ul>
                </div>
            </div>
        </nav>
        <main class="py-4">
            @yield('content')
        </main>
    </div>
    @auth
        <script>
            window.Laravel = {!! json_encode([
                'csrf_token' => csrf_token(),
                'api_token' => Auth::user()->api_token
            ]) !!};
        </script>
    @endauth
</body>
Salin selepas log masuk

Dalam contoh ini, kami menggunakan Arahan @auth dan @csrf Blade Sanctum untuk mendapatkan token pengesahan pengguna dan token CSRF.

Itu sahaja tentang cara melaksanakan pengesahan SPA dan API menggunakan Laravel Sanctum. Menggunakan Laravel Sanctum memudahkan untuk menjamin titik akhir API dan aplikasi SPA kami serta membantu kami melaksanakan amalan keselamatan terbaik.

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk melaksanakan pengesahan SPA dan API menggunakan Laravel Sanctum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Laravel - Perintah Artisan Laravel - Perintah Artisan Aug 27, 2024 am 10:51 AM

Laravel - Perintah Artisan - Laravel 5.7 hadir dengan cara baharu untuk merawat dan menguji arahan baharu. Ia termasuk ciri baharu untuk menguji arahan artisan dan demonstrasi disebut di bawah?

Laravel - Penyesuaian Penomboran Laravel - Penyesuaian Penomboran Aug 27, 2024 am 10:51 AM

Laravel - Penyesuaian Penomboran - Laravel termasuk ciri penomboran yang membantu pengguna atau pembangun menyertakan ciri penomboran. Paginator Laravel disepadukan dengan pembina pertanyaan dan ORM Fasih. Kaedah penomboran automatik

Bagaimana untuk mendapatkan kod pengembalian semasa menghantar e -mel gagal di Laravel? Bagaimana untuk mendapatkan kod pengembalian semasa menghantar e -mel gagal di Laravel? Apr 01, 2025 pm 02:45 PM

Kaedah untuk mendapatkan kod kembali apabila menghantar e -mel Laravel gagal. Apabila menggunakan Laravel untuk membangunkan aplikasi, anda sering menghadapi situasi di mana anda perlu menghantar kod pengesahan. Dan pada hakikatnya ...

Tugas Jadual Laravel tidak dilaksanakan: Apa yang harus saya lakukan jika tugas itu tidak berjalan selepas Jadual: Jalankan Perintah? Tugas Jadual Laravel tidak dilaksanakan: Apa yang harus saya lakukan jika tugas itu tidak berjalan selepas Jadual: Jalankan Perintah? Mar 31, 2025 pm 11:24 PM

Tugas Jadual Laravel menjalankan penyelesaian masalah yang tidak responsif semasa menggunakan penjadualan tugas jadual Laravel, banyak pemaju akan menghadapi masalah ini: Jadual: Jalankan ...

Di Laravel, bagaimana menangani situasi di mana kod pengesahan gagal dihantar melalui e -mel? Di Laravel, bagaimana menangani situasi di mana kod pengesahan gagal dihantar melalui e -mel? Mar 31, 2025 pm 11:48 PM

Kaedah mengendalikan kegagalan e -mel Laravel untuk menghantar kod pengesahan adalah menggunakan Laravel ...

Bagaimana untuk melaksanakan fungsi jadual tersuai untuk mengklik untuk menambah data dalam admin dcat? Bagaimana untuk melaksanakan fungsi jadual tersuai untuk mengklik untuk menambah data dalam admin dcat? Apr 01, 2025 am 07:09 AM

Cara melaksanakan fungsi jadual klik tersuai untuk menambah data dalam dcatadmin (laravel-admin) semasa menggunakan dcat ...

Laravel - Pelayan Buang Laravel - Pelayan Buang Aug 27, 2024 am 10:51 AM

Laravel - Dump Server - Laravel dump server datang dengan versi Laravel 5.7. Versi sebelumnya tidak termasuk pelayan dump. Pelayan dump akan menjadi kebergantungan pembangunan dalam fail komposer laravel/laravel.

Perkongsian Sambungan Laravel Redis: Mengapa kaedah pilih mempengaruhi sambungan lain? Perkongsian Sambungan Laravel Redis: Mengapa kaedah pilih mempengaruhi sambungan lain? Apr 01, 2025 am 07:45 AM

Kesan perkongsian sambungan Redis dalam rangka kerja Laravel dan pilih kaedah apabila menggunakan Rangka Kerja Laravel dan Redis, pemaju mungkin menghadapi masalah: melalui konfigurasi ...

See all articles