Laravel认证API:使用Passport实现OAuth2.0认证

Laravel认证API:使用Passport实现OAuth2.0认证

【免费下载链接】laravel Laravel 是一个具有表现力和优雅语法的 web 应用程序框架。我们已经为您下一个重大创意奠定了基础,让您无需在琐碎细节上花费过多精力,可以专注于创造性的开发工作。 【免费下载链接】laravel 项目地址: https://gitcode.com/GitHub_Trending/la/laravel

你是否正在为Laravel应用构建安全的API认证系统?是否需要让移动应用或第三方服务安全访问你的API?本文将带你一步步实现基于OAuth2.0的完整认证方案,无需复杂配置即可快速上线专业级认证系统。

环境准备与依赖检查

在开始前,请确保你的开发环境满足以下要求:

安装与配置Passport

1. 安装Passport包

通过Composer安装Laravel Passport扩展包:

composer require laravel/passport

2. 配置服务提供者

将Passport服务提供者添加到配置文件中。编辑config/app.php,在providers数组中添加:

'providers' => [
    // ...其他服务提供者
    Laravel\Passport\PassportServiceProvider::class,
],

3. 运行迁移与安装命令

执行数据库迁移生成Passport所需的数据表:

php artisan migrate

运行Passport安装命令,生成加密密钥和默认客户端:

php artisan passport:install

用户模型配置

修改app/Models/User.php,添加HasApiTokens trait:

use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
    // ...
}

认证服务配置

1. 配置Auth服务提供者

编辑app/Providers/AppServiceProvider.php,在boot方法中注册Passport路由:

use Laravel\Passport\Passport;

public function boot()
{
    $this->registerPolicies();
    
    Passport::routes();
    // 设置token有效期
    Passport::tokensExpireIn(now()->addDays(15));
    Passport::refreshTokensExpireIn(now()->addDays(30));
}

2. 更新认证配置

修改config/auth.php,将API驱动改为passport

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

实现认证API端点

编辑routes/web.php,添加认证相关路由:

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Auth\LoginController;

Route::post('/api/login', [LoginController::class, 'apiLogin']);
Route::post('/api/register', [LoginController::class, 'apiRegister']);
Route::middleware('auth:api')->get('/api/user', function (Request $request) {
    return $request->user();
});

测试认证流程

获取访问令牌

使用客户端凭证请求访问令牌:

curl -X POST http://your-app.com/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id=CLIENT_ID" \
  -d "client_secret=CLIENT_SECRET" \
  -d "grant_type=password" \
  -d "username=user@example.com" \
  -d "password=password"

使用令牌访问受保护资源

curl -X GET http://your-app.com/api/user \
  -H "Authorization: Bearer ACCESS_TOKEN"

常见问题解决

  • 客户端不存在:确保执行了php artisan passport:install命令
  • token过期:调整tokensExpireInrefreshTokensExpireIn配置
  • 认证失败:检查用户模型是否正确使用HasApiTokens trait

通过以上步骤,你已成功在Laravel应用中实现了基于OAuth2.0的API认证系统。Passport还支持客户端凭证、授权码等多种认证模式,可根据实际需求扩展使用。详细文档可参考Laravel官方文档中关于Passport的章节。

【免费下载链接】laravel Laravel 是一个具有表现力和优雅语法的 web 应用程序框架。我们已经为您下一个重大创意奠定了基础,让您无需在琐碎细节上花费过多精力,可以专注于创造性的开发工作。 【免费下载链接】laravel 项目地址: https://gitcode.com/GitHub_Trending/la/laravel

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值