Laravel auth vs Passport vs Sanctum

laravel

1个回答

写回答

Lullaby.

2025-11-06 17:51

+ 关注

Laravel
Laravel

Laravel是一款流行的php开发框架,提供了多种身份验证解决方案,其中包括Auth、Passport和Sanctum。这些解决方案在不同的场景下提供了不同的功能和优势。本文将分析比较这三个解决方案,并提供相应的案例代码。

1. Laravel Auth

Laravel Auth是Laravel框架自带的身份验证解决方案,它提供了简单而强大的身份验证功能。使用Laravel Auth,我们可以轻松地实现用户注册、登录、密码重置等常见的身份验证功能。在大多数情况下,Laravel Auth已经足够满足我们的需求。

下面是一个使用Laravel Auth进行用户注册和登录的示例代码:

php

// 注册用户

public function register(Request $request)

{

$validatedData = $request->validate([

'name' => 'required|string|max:255',

'emAIl' => 'required|string|emAIl|max:255|unique:users',

'password' => 'required|string|min:8|confirmed',

]);

$user = User::create([

'name' => $validatedData['name'],

'emAIl' => $validatedData['emAIl'],

'password' => Hash::make($validatedData['password']),

]);

Auth::login($user);

return redirect('/home');

}

// 用户登录

public function login(Request $request)

{

$credentials = $request->validate([

'emAIl' => 'required|string|emAIl',

'password' => 'required|string',

]);

if (Auth::attempt($credentials)) {

return redirect()->intended('/home');

}

return back()->withErrors([

'emAIl' => 'The provided credentials do not match our records.',

]);

}

2. Laravel Passport

Laravel Passport是一个完整的OAuth2服务器实现,用于为我们的应用程序提供API身份验证。它允许我们创建和管理客户端应用程序以及生成访问令牌,以便我们的应用程序可以通过API进行身份验证和授权。

使用Laravel Passport,我们可以实现基于令牌的身份验证,这对于构建面向移动设备或第三方应用程序的API非常有用。此外,Passport还提供了一些额外的功能,如令牌刷新、令牌撤销等。

下面是一个使用Laravel Passport进行API身份验证的示例代码:

php

// 创建API令牌

public function createToken(Request $request)

{

$user = Auth::user();

$token = $user->createToken('API Token')->accessToken;

return response()->JSon(['token' => $token]);

}

// 使用API令牌进行身份验证

public function getUser(Request $request)

{

$user = Auth::guard('api')->user();

return response()->JSon(['user' => $user]);

}

3. Laravel Sanctum

Laravel Sanctum是Laravel框架的轻量级身份验证解决方案,专门用于构建SPA(单页应用程序)和移动应用程序的API身份验证。Sanctum使用简单,没有复杂的OAuth2流程,但提供了安全的身份验证和访问令牌管理功能。

使用Laravel Sanctum,我们可以轻松地为我们的SPA或移动应用程序实现基于令牌的身份验证。它提供了一种简单的方式来生成和管理API访问令牌,并允许我们为不同的用户角色定义权限。

下面是一个使用Laravel Sanctum进行SPA身份验证的示例代码:

php

// 创建API令牌

public function createToken(Request $request)

{

$user = Auth::user();

$token = $user->createToken('API Token')->plAInTextToken;

return response()->JSon(['token' => $token]);

}

// 使用API令牌进行身份验证

public function getUser(Request $request)

{

$user = Auth::guard('web')->user();

return response()->JSon(['user' => $user]);

}

在选择身份验证解决方案时,我们需要根据具体的需求和场景来选择合适的方案。如果只是实现常规的用户注册和登录功能,使用Laravel Auth已经足够。如果需要构建API身份验证,可以使用Laravel Passport或Sanctum。Passport提供了完整的OAuth2实现,适用于更复杂的授权需求,而Sanctum则更适用于轻量级的SPA和移动应用程序。

无论我们选择哪种身份验证解决方案,Laravel提供了丰富的工具和功能来简化开发过程,使我们能够快速构建安全可靠的应用程序。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号