laravel passport

2025-03-09 0 5

Image

Laravel Passport

简述解决方案

Laravel Passport 是一个强大的包,它为 Laravel 应用程序提供了 OAuth2 服务器的实现。借助 Passport,开发者可以轻松地将 API 认证集成到应用程序中,而无需从头开始构建复杂的认证逻辑。Passport 支持多种授权类型,如密码授权、客户端授权和个人访问令牌等,适用于各种场景下的 API 安全需求。

安装与配置

解决问题:快速设置OAuth2服务

1. 安装Passport

在您的 Laravel 项目中安装 Passport:

bash
composer require laravel/passport

然后,在 AuthServiceProvider 中使用 Passport::routes() 方法来注册 Passport 所需的路由:

php
// app/Providers/AuthServiceProvider.php</p>

<p>use LaravelPassportPassport;</p>

<p>public function boot()
{
    $this->registerPolicies();</p>

<pre><code>Passport::routes();

}

接下来,运行以下命令来创建 Passport 需要的数据库表:

bash
php artisan migrate

2. 配置模型

确保您的用户模型实现了 LaravelPassportHasApiTokens trait,以便能够生成和管理令牌:

php
// app/Models/User.php</p>

<p>use LaravelPassportHasApiTokens;
use IlluminateFoundationAuthUser as Authenticatable;</p>

<p>class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
}

3. 生成加密密钥

运行以下命令为 Passport 生成加密密钥:

bash
php artisan passport:install

这将在 storage/oauth-public.keystorage/oauth-private.key 文件中生成所需的 RSA 密钥对。

多思路应用

思路一:使用密码授权

如果您想让用户通过用户名和密码获取访问令牌,可以在控制器中这样做:

php
// app/Http/Controllers/AccessTokenController.php</p>

<p>use IlluminateHttpRequest;
use LcobucciJWTParser;
use LaravelPassportClientRepository;</p>

<p>class AccessTokenController extends Controller
{
    public function issueToken(Request $request)
    {
        $http = new GuzzleHttpClient;</p>

<pre><code>    $response = $http->post(url('oauth/token'), [
        'form_params' => [
            'grant_type' => 'password',
            'client_id' => $request->client_id,
            'client_secret' => $request->client_secret,
            'username' => $request->email,
            'password' => $request->password,
            'scope' => '',
        ],
    ]);

    return json_decode((string) $response->getBody(), true);
}

}

思路二:个人访问令牌

对于需要长期有效令牌的情况(如命令行工具),可以使用个人访问令牌:

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

思路三:保护API路由

在定义 API 路由时,可以通过中间件来保护这些路由:

php
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});

通过以上步骤,您可以根据具体的应用场景选择合适的授权方式,并安全地保护您的 API 端点。Laravel Passport 提供了灵活且易于使用的接口,使得 OAuth2 的实现变得简单而高效。

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

源码下载