Laravel生成令牌方法解析-实现与应用场景

2025-04-19 9

版权信息

(本文地址:https://www.nzw6.com/41976.html)

Image

在 Laravel 中生成令牌通常与 API 认证相关,最常用的方法是使用 Laravel Passport 或 Laravel Sanctum。以下是使用这两种方式生成令牌的简单介绍:

使用 Laravel Sanctum

Laravel Sanctum 是一个轻量级的认证包,适用于构建 SPA(单页应用)、移动应用和简单的 API。

安装 Sanctum

  1. 安装 Sanctum 包

    composer require laravel/sanctum
    
  2. 发布配置文件和迁移文件

    php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
    php artisan migrate
    
  3. User 模型中使用 HasApiTokens trait

    use Laravel\Sanctum\HasApiTokens;
    
    class User extends Authenticatable
    {
        use HasApiTokens, Notifiable;
    }
    
  4. AppServiceProvider 中注册 Sanctum 中间件(如果需要)
    通常,你需要在 config/sanctum.php 中配置中间件,但 Laravel 会在安装时自动设置一些默认行为。

生成令牌

在控制器中,你可以通过以下方式为用户生成令牌:

use Illuminate\Http\Request;
use App\Models\User;

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');

    if (Auth::attempt($credentials)) {
        $user = Auth::user();
        $token = $user->createToken('YourAppName')->plainTextToken;

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

    return response()->json(['error' => 'Unauthorized'], 401);
}

使用 Laravel Passport

Laravel Passport 是一个功能更全面的 OAuth2 服务器实现,适用于需要完整 OAuth2 功能的项目。

安装 Passport

  1. 安装 Passport 包

    composer require laravel/passport
    
  2. 运行安装命令

    php artisan passport:install
    

    该命令会创建用于存储 OAuth2 客户端和访问令牌的数据库表,并生成加密密钥。

  3. User 模型中使用 HasApiTokens trait(对于 Access Token)或使用 Laravel\Passport\HasApiTokens(具体实现可能略有不同):

    use Laravel\Passport\HasApiTokens;
    
    class User extends Authenticatable
    {
        use HasApiTokens, Notifiable;
    }
    
  4. AuthServiceProvider 中注册 Passport 路由

    use Laravel\Passport\Passport;
    
    public function boot()
    {
        $this->registerPolicies();
    
        Passport::routes();
    }
    

生成令牌

与 Sanctum 类似,你可以在控制器中为用户生成令牌:

use Illuminate\Http\Request;
use App\Models\User;

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');

    if (Auth::attempt($credentials)) {
        $user = Auth::user();
        $token = $user->createToken('YourAppName')->accessToken;

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

    return response()->json(['error' => 'Unauthorized'], 401);
}

注意事项

  • 选择包:如果你的应用需要简单的 API 认证,Sanctum 是一个很好的选择。如果需要完整的 OAuth2 功能,比如第三方应用接入,那么 Passport 更适合。
  • 安全性:确保在生产环境中使用 HTTPS,以保护令牌的安全。
  • 令牌过期:根据需要设置令牌的过期时间,以提高安全性。

希望这些信息能帮助你在 Laravel 中生成令牌!

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载