首页 > 解决方案 > 如何在没有 SPA 或图形界面的情况下,仅通过 POSTMAN 访问 Laravel Sanctum 的 API 路由?

问题描述

我是第一次使用 Laravel Sanctum,尤其是使用 API。我必须创建一个仅用于返回 JSON 的报告的 API,这是我无法通过 POSTMAN 访问的主题,因为它告诉我"message": "Unauthenticated."

我按照项目中的文档告诉我的配置步骤进行操作。

我按照文档在我的项目中告诉我的配置步骤,即安装 sanctum,运行提供程序,创建令牌迁移,在用户 sanctum 模型中引用并放置 HasApiTokens,此时我不知道是什么再做。

一方面,文档告诉我,我可以通过放置这一行来访问,token = $user->createToken('token-name');但我不知道在哪里放置它,因为它没有接口,因为目的是通过 PowerBi 访问

这是我的路由 API

Route::group(['middleware'=> 'auth:sanctum'], function (){
    Route::get('/reports','Api\ReportController@getTicketsCotizados');
});

我的控制器

    public function __construct()
    {
        $this->middleware('auth');
    }

    public function getTicketsCotizados(){

        $this->authorize('view ticket');

        $cotizados =Ticket::ticketWithLeadForStatus(3)->get();
        return response()->json($cotizados, 200);
    }

核心

'api' => [
            EnsureFrontendRequestsAreStateful::class,
            'throttle:60,1',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

用户

use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use Notifiable, UsesTenantConnection, HasApiTokens, HasRoles;
(...)
}

警卫

'api' => [
            'driver' => 'sanctum',
            'provider' => 'users',
            'hash' => false,
        ],

邮差 在此处输入图像描述

标签: laravelapilaravel-sanctum

解决方案


该命令应该在后端执行,它用于创建一个传递给用户的令牌,以用于将来的访问。

我并不精通安全最佳实践,但我认为您需要在接收电子邮件和密码并返回令牌以供进一步使用的圣所外部创建一个登录 api 路由。

在您的情况下,您可以使用 TINKER(laravel 的交互式 shell)快速生成令牌,仅用于测试,只需在项目根目录的命令行中键入以下内容:

php artisan tinker
$user = User::find([replace_with_user_accessing_api_id]);
$user->createToken('[replace_with_random_name]');

现在,您可以获取plainTextToken并将其放置在Postman的Authorization Tab中的Bearer Type下。


推荐阅读