Melaksanakan pengesahan keselamatan PHP menggunakan Pasport Laravel

王林
Lepaskan: 2023-07-25 21:34:01
asal
1416 orang telah melayarinya

Gunakan Pasport Laravel untuk melaksanakan pengesahan keselamatan PHP

Pengenalan:
Dalam pembangunan web moden, pengesahan dan kebenaran pengguna adalah fungsi keselamatan yang sangat penting. Pasport Laravel ialah alat pengesahan berasaskan OAuth2 yang boleh membantu kami melaksanakan fungsi pengesahan dan kebenaran pengguna dengan mudah. Artikel ini menerangkan cara melaksanakan pengesahan selamat dalam PHP menggunakan Pasport Laravel.

Langkah:

  1. Pasang Pasport Laravel
    Pertama, pastikan rangka kerja Laravel dipasang. Seterusnya, masukkan direktori projek dalam terminal dan laksanakan arahan berikut untuk memasang pakej Pasport Laravel:

    composer require laravel/passport
    Salin selepas log masuk

    Selepas pemasangan berjaya, jalankan arahan berikut untuk menerbitkan fail dan pemindahan pangkalan data yang diperlukan untuk pakej:

    php artisan passport:install
    Salin selepas log masuk
  2. Konfigurasikan Pasport
    Buka fail config/app.php dan tambahkan penyedia perkhidmatan berikut dalam tatasusunan pembekal: config/app.php 文件,在 providers 数组中添加以下服务提供者:

    LaravelPassportPassportServiceProvider::class,
    Salin selepas log masuk

    然后,在 app/Http/Kernel.php 文件中的 $routeMiddleware 数组中,添加以下中间件:

    'client' => LaravelPassportHttpMiddlewareCheckClientCredentials::class,
    Salin selepas log masuk

    最后,在 app/User.php 文件中添加 PassportHasApiTokens trait:

    use LaravelPassportHasApiTokens;
    Salin selepas log masuk

    并在类的 trait 数组中引入:

    use HasApiTokens;
    Salin selepas log masuk

    现在,我们已经成功配置了 Laravel Passport。

  3. 创建用户认证接口
    首先,我们需要创建一个控制器来处理用户认证请求。可以执行以下命令来生成一个新的控制器:

    php artisan make:controller AuthController
    Salin selepas log masuk

    然后,在 AuthController 中添加以下方法来处理注册和登录请求:

    use IlluminateHttpRequest;
    use IlluminateSupportFacadesAuth;
    
    class AuthController extends Controller
    {
     public function register(Request $request)
     {
         // 验证请求数据
         $request->validate([
             'name' => 'required|unique:users',
             'email' => 'required|email|unique:users',
             'password' => 'required|min:6'
         ]);
    
         // 创建用户
         $user = User::create([
             'name' => request('name'),
             'email' => request('email'),
             'password' => bcrypt(request('password')),
         ]);
    
         // 生成访问令牌
         $token = $user->createToken('accessToken')->accessToken;
    
         // 返回响应
         return response()->json(['token' => $token], 200);
     }
    
     public function login(Request $request)
     {
         // 验证请求数据
         $credentials = request(['email', 'password']);
    
         // 检查用户凭据
         if (!Auth::attempt($credentials)) {
             return response()->json(['message' => 'Unauthorized'], 401);
         }
    
         // 获取当前用户
         $user = $request->user();
    
         // 生成访问令牌
         $token = $user->createToken('accessToken')->accessToken;
    
         // 返回响应
         return response()->json(['user' => $user, 'token' => $token], 200);
     }
    }
    Salin selepas log masuk
  4. 创建路由
    打开 routes/api.php 文件,并添加以下路由:

    Route::post('register', 'AuthController@register');
    Route::post('login', 'AuthController@login')->middleware('client');
    Salin selepas log masuk
  5. 使用 Passport 守卫
    打开 config/auth.php 文件,并将 api 守卫的驱动更改为 passport

    'guards' => [
     'api' => [
         'driver' => 'passport',
         'provider' => 'users',
     ],
    ],
    Salin selepas log masuk
  6. 使用认证用户
    现在,我们可以使用 auth:api 中间件来验证用户身份并保护相关的 API 路由。例如,在 AuthController 中,可以添加以下路由:

    public function profile()
    {
     $user = Auth::user();
    
     return response()->json(['user' => $user], 200);
    }
    Salin selepas log masuk

    然后,在 routes/api.php 中,添加以下路由:

    Route::get('profile', 'AuthController@profile')->middleware('auth:api');
    Salin selepas log masuk

    这样,在访问 /api/profilerrreee

    Kemudian, dalam app/Http/Kernel. php Dalam tatasusunan $routeMiddleware dalam fail>, tambahkan middleware berikut:
  7. rrreee
Akhir sekali, tambahkan Pasportdalam app/User. php file >'s HasApiTokens trait:

rrreee
dan diperkenalkan dalam tatasusunan trait kelas:

rrreee🎜Kini, kami telah berjaya mengkonfigurasi Laravel Passport. 🎜🎜🎜🎜Buat antara muka pengesahan pengguna🎜Pertama, kita perlu mencipta pengawal untuk mengendalikan permintaan pengesahan pengguna. Anda boleh melaksanakan arahan berikut untuk menjana pengawal baharu: 🎜rrreee🎜 Kemudian, tambah kaedah berikut dalam AuthController untuk mengendalikan permintaan pendaftaran dan log masuk: 🎜rrreee🎜🎜🎜Buat laluan 🎜Buka laluan /api.php fail dan tambahkan laluan berikut: 🎜rrreee🎜🎜🎜Guna Passport guard 🎜Buka fail config/auth.php dan tambahkan api guard Pemandu ditukar kepada pasport: 🎜rrreee🎜🎜🎜Gunakan pengguna yang disahkan🎜Kini, kami boleh menggunakan perisian tengah auth:api untuk mengesahkan pengguna dan melindungi laluan API yang berkaitan. Contohnya, dalam AuthController, anda boleh menambah laluan berikut: 🎜rrreee🎜 Kemudian, dalam routes/api.php, tambah laluan berikut: 🎜rrreee🎜Dengan cara ini , apabila mengakses /api/profile, pengguna akan diminta untuk memberikan token pengesahan yang sah terlebih dahulu. 🎜🎜🎜🎜Ringkasan: 🎜Artikel ini memperincikan cara menggunakan Pasport Laravel untuk melaksanakan pengesahan keselamatan PHP. Dengan memasang dan mengkonfigurasi Pasport Laravel, kami boleh melaksanakan fungsi pengesahan dan kebenaran pengguna dengan cepat serta melindungi laluan API kami. Semoga artikel ini dapat membantu pembangun yang menggunakan Pasport Laravel untuk pengesahan. 🎜

Atas ialah kandungan terperinci Melaksanakan pengesahan keselamatan PHP menggunakan Pasport Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!