当前位置: 首页 > 知识库问答 >
问题:

Laravel Passport“auth:api”中间件充当“web,auth”中间件

丘向荣
2023-03-14

我已经为Laravel 5.3设置了Laravel Passport包,正如官方文档中所述(https://laravel.com/docs/5.3/passport#introduction).

我希望移动应用程序使用API,因此我尝试实现密码授予令牌。我已经创建了一个密码授予客户端,令牌请求过程。。。

$response = $http->post('http://my-app.com/oauth/token', [
    'form_params' => [
        'grant_type' => 'password',
        'client_id' => 'client-id',
        'client_secret' => 'client-secret',
        'username' => 'my@email.com',
        'password' => 'my-password',
        'scope' => '',
    ],
]);

...正如预期的那样,为我的一个用户返回一个访问令牌和一个刷新令牌。

一方面,

php artisan route:list

列出api/用户URI:api、auth:api的正确中间件

api guard的驱动程序在config/auth中正确设置为passport。php。总而言之,安装过程的每一步都已完成(https://laravel.com/docs/5.3/passport#installation).

api的默认内容。php:

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

当我访问http://my-app.com/api/user时,问题就来了,因为它似乎是使用“网络”中间件验证请求,而不是“应用编程接口”...当我访问,我被重定向到 /login(登录表单)如果用户没有登录,并 /home如果它是...

任何帮助都将不胜感激。提前谢谢。

共有2个答案

鲁斯伯
2023-03-14

正确的解决方案是从这个文件中删除reDirectTo()app/超文本传输协议/中间件/Authenticate.php中验证中间件

慕容安易
2023-03-14

解决了的!为了记录在案,解决方案:

我正在把请求发送到http://my-app.com/api/userHTTP头错误。我在发送:

Type: Authorization - Content: Bearer: $accessToken 

...正确的方法是:

Type: Authorization - Content: Bearer $accessToken (without colon)

我从没想过会是打字错误...无论如何,这个错误不容易被发现,因为重定向到登录表单从一开始就误导了我。我相信这确实是一种奇怪的行为...

 类似资料:
  • 我在使用Laravel 5.2框架的中间件组时遇到了一些问题。 我的路线。php文件是: 我在这里使用laravel默认登录/注册身份验证。使用php-artisan-make:auth命令。我想给用户限制一些,例如路由组。所以 如何限制用户的类别路由组? 如果我使用Route::组(['中间件'= 谢谢 N、 B:如果你需要了解任何文件,请在下面给我留言,我会添加这些文件。

  • 我修改了LoginController中的登录函数,这就是我所写的 这似乎工作得很好,而且正在工作,但是当我添加新的中间件时,它是并且我选中了

  • 我已经创建了一个新的中间件名称Adminpanel 和注册中间件 和路线 }); 但当我运行时,它要求我尝试获取非对象的属性,这意味着我不能在这里访问Auth类,有人能告诉我错误是什么以及如何在中间件中访问Auth Facade吗。 这是我的身份验证码 谢谢

  • JWT 中间件 JSON Web Token(JWT) 是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。 对于有效的令牌,它将用户存储进上下文,并调用下一个处理程序。 对于无效的令牌,它发送”401 - Unauthorized”的响应。 对于空的或无效的Authorization头,它发送”400 - Bad Request”。 使用 e.Use(middl

  • 调用中间件的形式为: func( name string, args []reflect.Value, context Context, next NextInvokeHandler) (results []reflect.Value, err error) { ... results, err = next(name, args, context)

  • 介绍 Laravel 中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求。例如,Laravel 内置了一个中间件来验证用户的身份认证。如果用户没有通过身份认证,中间件会将用户重定向到登录界面。但是,如果用户被认证,中间件将允许该请求进一步进入该应用。 当然,除了身份认证以外,还可以编写另外的中间件来执行各种任务。例如:CORS 中间件可以负责为所有离开应用的响应添加合适的头部信息;日志中间