Rumah  >  Artikel  >  rangka kerja php  >  Pengesahan dan Keizinan API dengan Laravel: Melindungi Data dan Operasi Sensitif

Pengesahan dan Keizinan API dengan Laravel: Melindungi Data dan Operasi Sensitif

WBOY
WBOYasal
2023-08-26 14:33:361830semak imbas

Pengesahan dan Keizinan API dengan Laravel: Melindungi Data dan Operasi Sensitif

Menggunakan Laravel untuk pengesahan dan kebenaran API: melindungi data dan operasi sensitif

Ikhtisar:
API (Antara Muka Pengaturcaraan Aplikasi) ialah bahagian penting dalam pembangunan aplikasi web moden, yang membolehkan interaksi data dan fungsi antara pelbagai panggilan sistem. Dalam aplikasi API, keselamatan data adalah penting. Laravel ialah rangka kerja PHP popular yang menyediakan fungsi pengesahan dan kebenaran API yang berkuasa, yang boleh membantu kami melindungi data dan operasi sensitif serta menghalang akses tanpa kebenaran.

1. Pasang dan konfigurasikan Laravel
Pertama, kita perlu menggunakan komposer untuk memasang Laravel. Jalankan arahan berikut dalam baris arahan:

composer global require laravel/installer

Selepas pemasangan selesai, kita boleh menggunakan arahan berikut untuk mencipta projek Laravel baharu:

laravel new api-auth

Masukkan direktori di mana projek itu terletak:

cd api-auth

Seterusnya, kita perlu untuk menjana kunci untuk menyulitkan data Pengguna kami. Jalankan arahan berikut:

php artisan key:generate

2. Cipta fail berkaitan pengesahan dan kebenaran API

  1. Buat model pengguna: Dalam Laravel, kami sering menggunakan model Eloquent untuk mengurus data dalam pangkalan data. Jalankan arahan berikut untuk menjana model Pengguna:
php artisan make:model User -m

Arahan ini akan menjana model Pengguna dan fail pemindahan pangkalan data yang sepadan.

  1. Buat pengawal pengesahan pengguna: Jalankan arahan berikut untuk menjana pengawal pengesahan pengguna:
php artisan make:controller AuthController
  1. Cipta laluan API: Edit fail routes/api.php dan tentukan laluan yang berkaitan untuk API: routes/api.php文件,定义API的相关路由:
Route::post('login', 'AuthController@login');
Route::post('register', 'AuthController@register');
Route::middleware('auth:api')->group(function () {
    Route::get('user', 'AuthController@user');
    Route::post('logout', 'AuthController@logout');
});

以上路由定义了用户登录、注册、获取用户信息、注销等接口。

  1. 编写用户认证控制器:打开app/Http/Controllers/AuthController.php文件,编写以下代码:
namespace AppHttpControllers;

use IlluminateHttpRequest;
use AppUser;
use IlluminateSupportFacadesAuth;

class AuthController extends Controller
{
    public function register(Request $request)
    {
        $validatedData = $request->validate([
            'name' => 'required|max:55',
            'email' => 'email|required|unique:users',
            'password' => 'required|confirmed'
        ]);

        $validatedData['password'] = bcrypt($request->password);

        $user = User::create($validatedData);

        $accessToken = $user->createToken('authToken')->accessToken;

        return response(['user' => $user, 'access_token' => $accessToken]);
    }

    public function login(Request $request)
    {
        $loginData = $request->validate([
            'email' => 'email|required',
            'password' => 'required'
        ]);

        if (!Auth::attempt($loginData)) {
            return response(['message' => 'Invalid credentials']);
        }

        $accessToken = Auth::user()->createToken('authToken')->accessToken;

        return response(['user' => Auth::user(), 'access_token' => $accessToken]);
    }

    public function user()
    {
        return response(['user' => Auth::user()]);
    }

    public function logout(Request $request)
    {
        $request->user()->token()->revoke();
        return response(['message' => 'Successfully logged out']);
    }
}

以上代码中,我们定义了用户的注册、登录、获取用户信息和注销操作。

三、配置API认证和授权

  1. 配置Guard和Provider:打开config/auth.php文件,找到guardsproviders配置项,根据以下示例进行配置:
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users'
    ],

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ]
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => AppUser::class
    ]
],
  1. 运行数据库迁移:运行以下命令执行生成的数据库迁移:
php artisan migrate
  1. 配置Passport:运行以下命令,发布Passport的配置文件:
php artisan passport:install

执行完毕后,会生成一对加密的公钥和私钥,用来签发和验证访问令牌。

  1. 创建个人访问客户端:运行以下命令创建个人访问客户端:
php artisan passport:client --personal

五、测试API认证和授权

  1. 注册新用户:使用POST请求向http://localhost:8000/api/register发送以下数据:
{
    "name": "John Doe",
    "email": "johndoe@example.com",
    "password": "password",
    "password_confirmation": "password"
}
  1. 登录用户:使用POST请求向http://localhost:8000/api/login发送以下数据:
{
    "email": "johndoe@example.com",
    "password": "password"
}
  1. 获取用户信息:使用GET请求向http://localhost:8000/api/user发送请求,在Headers中添加Authorization: Bearer {access_token},其中{access_token}是登录时返回的访问令牌。
  2. 注销用户:使用POST请求向http://localhost:8000/api/logout发送请求,同样在Headers中添加Authorization: Bearer {access_token}
  3. rrreee
Laluan di atas mentakrifkan log masuk pengguna, pendaftaran, mendapatkan maklumat pengguna, log keluar dan antara muka lain.

    Tulis pengawal pengesahan pengguna: Buka fail app/Http/Controllers/AuthController.php dan tulis kod berikut: 🎜🎜rrreee🎜Dalam kod di atas, kami mentakrifkan pendaftaran Pengguna, log masuk, mendapatkan maklumat pengguna dan operasi log keluar. 🎜🎜3. Konfigurasikan pengesahan dan kebenaran API 🎜🎜🎜Konfigurasi Pengawal dan Pembekal: Buka fail config/auth.php dan cari guards dan providers Item konfigurasi, konfigurasikan mengikut contoh berikut: 🎜🎜rrreee🎜🎜Jalankan pemindahan pangkalan data: Jalankan arahan berikut untuk melaksanakan pemindahan pangkalan data yang dijana: 🎜🎜rrreee🎜🎜Konfigurasi Pasport: Jalankan arahan berikut untuk menerbitkan fail konfigurasi Pasport: 🎜🎜rrreee🎜Laksanakan Selepas selesai, sepasang kunci awam dan peribadi yang disulitkan akan dijana untuk mengeluarkan dan mengesahkan token akses. 🎜
      🎜Buat klien akses peribadi: Jalankan arahan berikut untuk mencipta klien akses peribadi: 🎜🎜rrreee🎜 5. Uji pengesahan dan kebenaran API 🎜🎜🎜Daftar pengguna baharu: Gunakan permintaan POST untuk http://localhost:8000/api/register menghantar data berikut: 🎜🎜rrreee🎜🎜Pengguna log masuk: Gunakan permintaan POST untuk http://localhost:8000/api/login Data berikut: 🎜🎜rrreee🎜🎜 Dapatkan maklumat pengguna: gunakan permintaan GET untuk menghantar permintaan ke http://localhost:8000/api/user, tambahkan Kebenaran: Pembawa {access_token} dalam Pengepala , dengan {access_token} ialah token akses yang dikembalikan semasa log masuk. 🎜🎜Log keluar pengguna: Gunakan permintaan POST untuk menghantar permintaan ke http://localhost:8000/api/logout dan juga tambahkan Authorization: Bearer {access_token} dalam Tajuk. 🎜🎜🎜 Di atas, kami telah berjaya melindungi data dan operasi sensitif melalui fungsi pengesahan dan kebenaran API Laravel. Menggunakan model pengguna, pengawal, penghalaan dan fungsi yang disediakan oleh Pasport, kami boleh melaksanakan kawalan pengesahan dan kebenaran API dengan mudah. 🎜

Atas ialah kandungan terperinci Pengesahan dan Keizinan API dengan Laravel: Melindungi Data dan Operasi Sensitif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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