具有正常设计的 Passport Laravel Rest API Auth

Posted

技术标签:

【中文标题】具有正常设计的 Passport Laravel Rest API Auth【英文标题】:Passport Laravel Rest API Auth With Normal Design 【发布时间】:2018-08-05 03:18:11 【问题描述】:

我已经完全分配了 Passport REST API,我获得了令牌并在 PostMan 上进行了测试

它使用这个 Auth 检索数据

这是带有 laravel 刀片视图的普通 js html(不是 VUE.JS)

<script>
$.ajax(
  method: 'POST',
  dataType: 'json',
  url: "**********/api/User/GetPost",
  headers: 
      'Authorization':'Bearer Tokenblablabla',
      'Content-Type':'application/json'
  ,
  data: null,
  success: function(data)
  console.log('succes: '+data);
  

);

这是控制器功能

    public function GetPosts(Request $request)
         $data3="Test"
         return response()->json([
            'Success'=> true,
            'Message'=>'8',
            'Data' => $data3,
         ], 200);
    

这是 api.php // 这将返回一个带有帖子详细信息的 json

Route::group(['middleware'=>'auth:api'],function()
      Route::post('/GetPosts','Wall\PostsController@GetPosts');
);

这是 web.php

Route::get('/GetPost', function () 
     return view('getpostview');
)->middleware('auth:api');

我很困惑,我无法发送身份验证,除了我无法从 API iam 检索 json 3 天陷入这个问题 我需要什么将普通的 laravel 刀片连接到另一个 laravel 护照 REST API

【问题讨论】:

【参考方案1】:

Laravel 生成的用于身份验证的 Blade 模板可以与 Laravel Passport、JWT 等配合使用。

您需要做的是正确配置Passport。

别忘了修改APIconfig/auth.php文件中指定的驱动:

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

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],

此外,要检索 json 响应在您的请求中添加此标头

“接受”:“应用程序/json”

所以你的请求应该是这样的:

$response = $client->request('GET', 'some-url/api/getPosts', [
    'headers' => [
        'Accept' => 'application/json',
        'Authorization' => 'Bearer '.$accessToken,
    ],
]);

旁注

我鼓励您阅读this presentation, "Teaching a Dog to REST",以正确使用 HTTP 动词和良好实践来创建一个干净、直观且易于学习的 API。

【讨论】:

你没有得到我想要的我使用我自己为移动设备做的 API 然后添加更多细节,我在任何地方都看不到两个 Laravel 项目

以上是关于具有正常设计的 Passport Laravel Rest API Auth的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8/Passport/GuzzleHttp APO 返回 200 OK 但没有正文响应

Laravel Passport 使用不同的模型

Laravel Passport 没有身份验证

Laravel Passport 和 Angular 在 api/login 路线上给了我未经授权但在邮递员上工作正常?

Vue 组件未显示 - Passport 实现 Laravel 5.4

Laravel 5.5 - Laravel Passport 使用正确的授权类型?