0Pricing
PHP Academy · บทเรียน

การตรวจสอบสิทธิ์ด้วย Laravel Sanctum

ออกและตรวจสอบโทเค็น API ด้วย Sanctum สำหรับไคลเอ็นต์ SPA และอุปกรณ์เคลื่อนที่

การตรวจสอบสิทธิ์ด้วย Laravel Sanctum เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

Sanctum คืออะไร

Laravel Sanctum มีระบบการตรวจสอบสิทธิ์ด้วยโทเค็นที่เรียบง่ายสำหรับ SPA และไคลเอนต์มือถือ รองรับทั้งโทเค็น API และการตรวจสอบสิทธิ์ด้วยเซสชันสำหรับ SPA ของเจ้าของระบบ

การติดตั้ง Sanctum

ติดตั้งและกำหนดค่า Sanctum

$ composer require laravel/sanctum
$ php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
$ php artisan migrate

การออกโทเค็น

สร้างโทเค็นการเข้าถึงส่วนบุคคลสำหรับผู้ใช้หลังจากตรวจสอบข้อมูลประจำตัวแล้ว

<?php
Route::post("/login", function (Request $request) {
    $request->validate(["email" => "required", "password" => "required"]);
    $user = User::where("email", $request->email)->first();
    if (!$user || !Hash::check($request->password, $user->password)) {
        throw ValidationException::withMessages([
            "email" => ["The provided credentials are incorrect."],
        ]);
    }
    $token = $user->createToken("mobile-app")->plainTextToken;
    return response()->json(["token" => $token]);
});

เทรต HasApiTokens

เพิ่มเทรต HasApiTokens ให้กับโมเดล User เพื่อเปิดใช้การจัดการโทเค็น

<?php
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;
}

การปกป้องเส้นทาง

ใช้มิดเดิลแวร์ auth:sanctum เพื่อปกป้องเส้นทาง API

<?php
// routes/api.php
Route::middleware("auth:sanctum")->group(function () {
    Route::get("/user",  fn(Request $r) => $r->user());
    Route::apiResource("posts", PostController::class);
});

การส่งโทเค็น

ไคลเอนต์ส่งโทเค็นในส่วนหัว Authorization ในรูปแบบโทเค็น Bearer

# HTTP header:
Authorization: Bearer 1|AbCdEf1234567890...

ขอบเขตโทเค็น (ความสามารถ)

กำหนดความสามารถให้โทเค็นเพื่อจำกัดการดำเนินการที่โทเค็นนั้นทำได้

<?php
// Create token with abilities:
$token = $user->createToken("mobile", ["read:posts", "write:comments"])->plainTextToken;

// Check ability:
if ($user->tokenCan("write:comments")) {
    // allowed
}

การเพิกถอนโทเค็น

ลบโทเค็นเฉพาะรายการหรือโทเค็นทั้งหมด (ออกจากระบบทุกอุปกรณ์)

<?php
// Revoke current token (logout):
$request->user()->currentAccessToken()->delete();

// Revoke all tokens (logout everywhere):
$request->user()->tokens()->delete();

การหมดอายุของโทเค็น

กำหนดอายุโทเค็นใน config/sanctum.php ระบบจะตรวจสอบโทเค็นกับ last_used_at และช่วงเวลาหมดอายุ

// config/sanctum.php
"expiration" => 60 * 24 * 7, // 7 days in minutes

การตรวจสอบสิทธิ์ของ SPA

สำหรับ SPA ที่อยู่ในโดเมนเดียวกัน Sanctum สามารถใช้การตรวจสอบสิทธิ์ด้วยเซสชันแทนโทเค็นได้ เรียก /sanctum/csrf-cookie ก่อน จากนั้นจึงเข้าสู่ระบบตามปกติ

Sanctum เทียบกับ Passport

Sanctum: โทเค็น API และการตรวจสอบสิทธิ์ SPA ที่เรียบง่าย Passport: เซิร์ฟเวอร์ OAuth2 เต็มรูปแบบพร้อมรหัสการอนุญาต ข้อมูลประจำตัวไคลเอนต์ และโทเค็นรีเฟรช เริ่มต้นด้วย Sanctum และเปลี่ยนไปใช้ Passport เฉพาะเมื่อจำเป็นต้องใช้ OAuth2

สรุป

Sanctum ออกโทเค็น Bearer สำหรับการตรวจสอบสิทธิ์ API เพิ่ม HasApiTokens ให้กับโมเดล User ปกป้องเส้นทางด้วย auth:sanctum เพิกถอนโทเค็นเมื่อออกจากระบบ ใช้ความสามารถเพื่อกำหนดขอบเขตสิทธิ์

ตรวจสอบอย่างรวดเร็ว

ไคลเอนต์ใส่โทเค็น Sanctum ในคำขอ API อย่างไร

คำถามที่พบบ่อย

บทเรียน “การตรวจสอบสิทธิ์ด้วย Laravel Sanctum” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การตรวจสอบสิทธิ์ด้วย Laravel Sanctum” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การตรวจสอบสิทธิ์ด้วย Laravel Sanctum”

ออกและตรวจสอบโทเค็น API ด้วย Sanctum สำหรับไคลเอ็นต์ SPA และอุปกรณ์เคลื่อนที่ คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การตรวจสอบสิทธิ์ด้วย Laravel Sanctum” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เส้นทาง API และคอนโทรลเลอร์ทรัพยากร
  2. ทรัพยากร API และการตอบกลับ JSON
  3. การตรวจสอบสิทธิ์ด้วย Laravel Sanctum
  4. การจำกัดอัตราและการกำหนดเวอร์ชัน API
← กลับไปที่ PHP Academy