【问题标题】:Laravel Sanctum unauthenticated using postmanLaravel Sanctum 未使用邮递员进行身份验证
【发布时间】:2021-05-03 06:20:23
【问题描述】:

我是按照 Laravel 官方文档一步一步来的。

当我向 {{host}}/api/login 发送请求时,我可以收到包含令牌的响应。一切都是正确的。

但是当我尝试向 {{host}}/api/user 发送请求时,它总是未经身份验证。

我检查了我的代码几次,我无法修复它。

在我的 .env 文件中,我设置如下,我的后端主机是 http://laravel_8_api.test

SESSION_DOMAIN=.laravel_8_api.test SANCTUM_STATEFUL_DOMAINS=.laravel_8_api.test

我怎样才能让它工作?请帮我。 The postman request screenshot

代码在此链接“https://github.com/ramseyjiang/laravel_8_api”

【问题讨论】:

  • 你在调用/api/user时是否使用了token作为bearer token?你的 auth 守卫应该是 api.php 中的 auth:sanctum。您目前没有使用 sanctum 进行身份验证。
  • 在路由中 > api.php 文件您正在使用 auth:api 作为中间件,但看起来您正在使用 sanctum 来维护令牌。所以,使用auth:sanctum这个中间件
  • @NICO 请检查 GitHub 上的代码,我按照你说的做了,但还是有同样的问题。
  • @Vishnu 如果我这样做了,它会将问题显示为“stackoverflow.com/questions/61141197/…”,但它不能解决。如果你有时间,可以请你下载代码并帮助我吗?

标签: laravel postman laravel-sanctum


【解决方案1】:

//api.php

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

中间件应该是auth:sanctum 而不是of auth:api

【讨论】:

  • 谢谢。我做到了,之后它显示“”消息“:”SQLSTATE [42S22]:找不到列:1054 'where子句'中的未知列'api_token'(SQL:select * from users where api_token = 1| gtvc1tOUbGyfvWaiYPm8b9BzHGtzwTZUjaVL5VSQ limit 1)",",但我没有使用 api_token 也不知道为什么会出现这个问题。你为什么显示这个问题?
  • 是的,您正在使用痛苦文本令牌。您没有使用基于会话的默认登录方法。 github.com/ramseyjiang/laravel_8_api/blob/main/app/Http/…
  • 不是那个问题,我修改了config/auth.php,然后我解决了这个问题。官方文档上的那个改动被忘记了。
【解决方案2】:

在官方文档中忘记修改config/auth.php

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

之后,它将解决此问题。

不需要修改api.php中的代码 我的意思是它不需要将 auth:sanctum 更改为 auth:api,如果更改它,它将作为链接 Laravel Sanctum : column not found: 1054 Unknown column 'api_token' in 'where clause'

产生另一个问题

【讨论】:

    猜你喜欢
    • 2018-05-07
    • 2023-03-10
    • 2023-03-29
    • 2021-12-23
    • 2020-12-14
    • 1970-01-01
    • 2021-05-01
    • 2017-04-15
    • 2020-11-12
    相关资源
    最近更新 更多