การตรวจสอบสิทธิ์ด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เส้นทาง API และคอนโทรลเลอร์ทรัพยากร
- ทรัพยากร API และการตอบกลับ JSON
- การตรวจสอบสิทธิ์ด้วย Laravel Sanctum
- การจำกัดอัตราและการกำหนดเวอร์ชัน API