gpt4 book ai didi

Laravel API 项目 - 设计和验证

转载 作者:行者123 更新时间:2023-12-02 15:05:09 25 4
gpt4 key购买 nike

我的任务是为客户构建外部 API。在不泄露任何业务数据的情况下,数据库包含了我们的整个工作流程。生成的事件、相关门票和其他信息,所有这些都可以由客户区分。

我想构建一个具有非常简单端点的 API。对于每个表,例如门票,我希望有两个端点:

/tickets            #will return a list of tickets and general information
/ticket/<ticket_id> #More detailed information about the specific ticket

对于任何进行身份验证的客户,这些路由将仅返回与其关联的数据库记录。

我以前没有在 Laravel 中编写过这样的系统。我对护照是最佳选择的理解是否正确?我想我是在问是否有更简单的方法来安全地进行这种类型的身份验证(Passport 是否矫枉过正)?如果我们有一小部分客户,并且可以为他们设置身份验证,那么证书是否是更好的方法?或者 OAuth2 已经成为行业标准,不使用 Passport 就是一个错误?

如果 Passport 最好,那么 OAuth2 服务器和应用程序服务器是单独的站点更好,还是可以将它们合并到一个应用程序中?

感谢您的任何建议。

最佳答案

尽管建议使用护照,但您仍然可以通过为用户提供 api_token 属性来使用简单的 API 身份验证。如果您在请求 header 中设置该 token ,Laravel 将自动对用户进行身份验证。尽管您必须使用 auth:api 中间件。

如果您使用 auth:api 中间件,您可以在 Controller 中执行 $user = Auth::guard('api')->user(); 和它会自动返回发送请求的用户。

这篇文章很好地解释了该怎么做:https://gistlog.co/JacobBennett/090369fbab0b31130b51 。它给出了以下步骤:

  1. api_token 作为字符串添加到用户迁移
  2. routes/api.php中使用中间件定义分组路由

    Route::group(['中间件' => 'auth:api', '前缀' => 'v1'], function() {
    路线::资源('门票', 'TicketController');
    });

一切顺利。

只要您定义 public,Route::resource() 即可处理 /tickets/tickets/123 Controller 中的 function index()public function show()

API 调用的 URL 将类似于 http://website.com/api/v1,因为我在该组中添加了 v1 前缀。

关于Laravel API 项目 - 设计和验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41949205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com