laravel passport怎么用?-icode9专业技术文章分享

2024/10/10 6:03:23

本文主要是介绍laravel passport怎么用?-icode9专业技术文章分享,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Laravel Passport 是 Laravel 的一个包,用于实现 API 认证。它基于 OAuth2 提供了完整的认证功能,支持访问令牌(access tokens)、刷新令牌(refresh tokens)等功能。下面是如何在 Laravel 中安装和使用 Passport 的基步骤:

1. 安装 Laravel Passport

首先,确保你的 Laravel 应用已经设置好。然后,你可以通过 Composer 安装 Passport:

composer require laravel/passport

Bash

2. 运行数据库迁移

Passport 会在你的数据库中创建所需的表。运行以下命令来迁移这些表:

php artisan migrate

Bash

3. 生成加密密钥

Passport 需要生成加密密钥以确保令牌的安全性。运行以下命令生成密钥:

php artisan passport:install

Bash

这会生成一些密钥并为你创建默认的客户端。

4. 配置 AuthServiceProvider

在 app/Providers/AuthServiceProvider.php 中,添加 Passport 的路由到 boot 方法中:

use Laravel\Passport\Passport;

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

    Passport::routes(); // 添加这行
}

PHP

5. 设置用户模型

确保你的用户模型(通常是 App\Models\User)使用 Passport 提供的 HasApiTokens trait:

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    // ...
}

PHP

6. 配置 Auth 选项

在 config/auth.php 文件中,更新 guards 部分,将 api 的驱动改为 passport

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport', // 修改这里
        'provider' => 'users',
    ],
],

PHP

7. 创建认证路由

在你的 routes/api.php 文件中,添加用于获取访问令牌的路由:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::post('login', 'AuthController@login');  // 用户登录
Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user(); // 已认证的用户信息
});

PHP

8. 编写认证控制器

创建一个控制器来处理认证逻辑,例如 AuthController

php artisan make:controller AuthController

PHP

在 AuthController 中编写 login 方法:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\User;
use Illuminate\Support\Facades\Hash;

class AuthController extends Controller
{
    public function login(Request $request)
    {
        $request->validate([
            'email' => 'required|email',
            'password' => 'required',
        ]);

        $user = User::where('email', $request->email)->first();

        if ($user && Hash::check($request->password, $user->password)) {
            $token = $user->createToken('MyApp')->accessToken; // 创建访问令牌
            return response()->json(['token' => $token], 200);
        } else {
            return response()->json(['error' => 'Unauthorized'], 401);
        }
    }
}

PHP

9. 测试认证

可以使用 Postman 或者其他 API 测试工具,向 http://your-app-url/api/login 发送 POST 请求,提供 email 和 password,你将收到一个访问令牌。

10. 使用令牌

使用获得的访问令牌,你可以访问受保护的路由。在请求的 HTTP 头中添加 Authorization

Authorization: Bearer YOUR_ACCESS_TOKEN

11. 刷新令牌(可选)

如果需要实现刷新令牌的功能,可以参考 Laravel Passport 文档提供的详细说明。

总结

以上就是在 Laravel 中安装和配置 Passport 的基础步骤。通过 Passport,您可以轻松地在 Laravel 应用中实现 OAuth2 认证机制。

标签: 来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。



这篇关于laravel passport怎么用?-icode9专业技术文章分享的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程