【问题标题】:generating API and laravel passport生成 API 和 laravel 护照
【发布时间】:2020-03-13 12:49:15
【问题描述】:

我是 Laravel 新手,请回答我的问题。

我正在使用 Laravel 5.8 开发一个系统,其中包含两个用户级别。

  1. 用户
  2. 管理员

  • 经过身份验证的用户可以查看帖子并将其存储到数据库中。 (行动:indexshowstore
  • 经过身份验证的管理员可以查看用户发布的帖子并批准发布。 (行动:indexshowstoredestroy
  • 我的数据库表:books 如下:

  • 身份证
  • 姓名
  • numbers_of_pages
  • 类型
  • 作者
  • 和用户表:

  • 身份证
  • 姓名
  • 电子邮件
  • 密码
  • 和管理员表:

  • 身份证
  • 姓名
  • 电子邮件
  • 密码
  • 第一个问题:

    在我的api.php

    Route::apiResource('books', 'BookController');
    

    Follow 是我想要的路线结构。

    # index()
    // http://127.0.0.1:8000/api/v1/books/drama -> get all books where type is drama
    // http://127.0.0.1:8000/api/v1/books/novel -> get all books where type is novel
    // http://127.0.0.1:8000/api/v1/books/magazine -> get all books where type is magazine
    

    如何使用命令创建的 BookController 实现这一点:

    php artisan make:controller BookController --api
    

    以及如何在路由中添加 v1 前缀?我不想在 RouteServiceProvider.php 中添加该版本号的前缀。

    另一个问题:
    如何oauth多个用户?管理员和用户都是 api 的消费者。

    【问题讨论】:

    • 你为什么不希望在 RouteServiceProvider 中设置 v1 前缀......并且auth 中间件可以为你想要检查的不同守卫获取参数
    • 谢谢。如何从路由中获取 BookController 中的 noveldramamagazine
    • 它将作为参数传递给您的 show 方法...对于您正在显示的那些 URL

    标签: laravel api filter resources laravel-passport


    【解决方案1】:

    因为我自己现在正在开发一个api,我知道你的一些问题并且已经成功完成了这个任务,所以我试着回答你的问题。

    到 URL 中的“v1”前缀:我已经在我的 routes/api.php 文件中使用

    Route::prefix('/v1')->group(function () { 
    // my routes for version 1
    }
    

    一个词代表您的用户/管理员内容:我没有将其放入 2 个单独的表中。这个想法是,你有一堆用户,其中只有一些是管理员。那么为什么不用admin 标志来标记它们,并给用户模型(在你的User.php 中)一个带有is_admin 的方法来返回,如果这个标志设置为truefalse。所以你可以看到,登录用户是不是管理员。

    有了这个,你可以随时在你的应用程序中使用auth()->user()->is_admin 来检查这个,看看这是否是管理员。

    希望能帮到你一点点?

    现在,您的Books 问题。 我会简单地将另一条路线放入我的routes/api.php 就像

    Route::get('books/{category}', 'BookController@category')->name('books.category');
    

    并在我的BookController 中创建一个名为public function category(String $category) 的新函数。在此,您可以检查$category 是否为有效的类别名称并处理返回。

    【讨论】:

    • 非常感谢您的友好回答。 prefix 有效。对于用户/管理员的情况,如果我出于某些原因需要使用两个表:用户和管理员,是否可以使用laravel passport 来验证两种用户类型?我认为passport 只为 users 表配置。如果不可能,并且我需要使用两个表并且我想实现该身份验证功能,那么我有什么选择?
    • sry,20 年来从来没有这个要求,但是看看护照配置,也许你可以在那里找到信息。但我真的认为,两张桌子没有用?
    • 非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2020-05-13
    • 2020-02-04
    • 2017-01-24
    • 2019-03-01
    • 1970-01-01
    • 2018-08-26
    • 2020-11-12
    • 2017-11-06
    相关资源
    最近更新 更多