如何使用Lumen保护REST API

Lumen是Laravel的弟弟:一种用于编写RESTful API的快速,轻量级的微框架。 只需少量代码,您就可以使用Lumen构建安全且快速的RESTful API。

在本课程的视频教程“ 使用Lumen创建REST API”中 ,您将学习如何使用Lumen的内置身份验证中间件来保护Lumen的REST API。

该视频引用了我们在本课程的先前课程中创建的示例音乐商店API的代码。 您可以从GitHub上的课程中查看完整的源代码。

如何使用Lumen保护REST API

流明认证

安全不仅是Web API的重要部分,也是应用程序的重要部分。 不幸的是,实现身份验证可能很困难。 但是值得庆幸的是,身份验证已内置在Lumen中,因此我们要做的就是启用身份验证,然后编写几行代码对用户进行身份验证,然后再编写几行代码来保护我们要保护的内容。

在我们的示例中,我们要保护吉他控制器上的三种方法。 它们是创建,更新和删除方法。 这些是只有经过身份验证的用户才能访问的东西。

吉他控制器

因此,让我们开始于bootstrap文件夹并打开app.php。

的appphp

我们需要取消两个注释。 第一个是对routeMiddleware的调用,该routeMiddleware正在设置身份验证中间件。 我们还想注册身份验证服务提供商。 所以第二条语句是$app->register(App\Providers\AuthServiceProvider::class); 。 只需取消注释这两个语句,我们现在就可以在应用程序中使用身份验证。

现在,我们要记下我们的身份验证中间件。 因此,我们转到App\Http\Middleware\Authenticate.php ,在此类的内部有一个称为handle的方法,该方法将在我们的受保护方法之前执行。

处理方法

因此,每当我们请求创建,更新或删除方法时,都将使用身份验证中间件,并且将调用此handle方法。

如果用户未通过身份验证,则它将返回401。否则,它将把请求传递给下一个处理该请求的事物。

这是我们需要研究的一件事。 另一个在Providers文件夹内,它是AuthServiceProvider.php。

AuthServiceProvider

现在,该文件的底部是一个称为boot的方法,而启动内部是对该viaRequest方法的调用。 这是负责实际验证用户身份的方法。 因此,这将取决于我们的实现。 在本课程中,我们的实现将非常简单。

我们要做的是检查名为Api-Token的标头。 如果它是某个值,那么我们将说用户已通过身份验证。 为了说用户已通过身份验证,我们必须返回一个用户实例。 如果我们返回null,则意味着该用户未通过身份验证。

因此,让我们继续编写该代码。 我将注释掉此现有代码。 我们要做的第一件事是检索Api-Token标头。 因此,我们将使用我们的请求,我们将调用标头方法,并且我们需要Api-Token。

$header = $request->header('Api-Token');

现在,让我首先说这是不安全的。 我们绝对希望将用户存储在数据库中。 它们每个都应该有自己的唯一令牌,实际上我们应该使用私钥和公钥。 但我将把所有实施细节留给您。 我们想要看到的是身份验证中间件如何插入到我们的应用程序中,这样我们就可以正常工作,然后您就可以实现您想要实现的功能。

因此,我们将检索名为Api-Token的标头。 首先让我们检查一下是否有东西。

检查我们是否有东西的代码

现在,我们要做的唯一另一件事就是说我们要在哪里使用我们的身份验证中间件。 我们可以在很多地方做到这一点。

首先是每当我们定义路线时。 例如,我们要保护我们的发帖请求。 因此,我们可以像这样做一样写路线。 本质上是同一件事,但是我们传递给post方法的第二个参数将具有两个键和值。


因此,不做任何进一步的介绍,我们可以跳至Fiddler,我们可以发出发布请求,然后我们可以查看该请求是否受到保护。

现在,关于Fiddler的一件大事是,它可以跟踪我们提出的所有请求。 因此,我们只需要查找发出POST请求的位置即可。 而且,如果我们尝试执行此操作,我们将得到401。但是,如果包含该Api-Token标头,并且将其设置为“小鸟向南飞”,那么无论何时发出此请求,我们都会得到200,并且我们已经知道该数据现在已经在数据库中。

所以这是第一个选择。 但是第二个选择是在控制器的构造函数中指定我们的中间件。 因此,让我们注释掉我们刚刚编写的代码,而改用我们的旧路由。

旧路线

让我们转到吉他控制器并添加以下代码:

吉他控制器

因此,如果我们回到Fiddler,并且发出相同的请求(让我们将值更改为strat,将make更改为Fender),那么我们将看到它仍然有效。 因此,当我们执行该请求时,我们得到200。如果我们取出Api令牌,那么我们得到401。

现在,我们还要发出其他一些请求。 因此,让我们执行GET请求,以便我们可以检索那些吉他并获取其ID。 让我们摆脱Api-Token,以便我们看到它无需任何类型的身份验证即可工作。 并且我们得到ID为1和ID为2。

因此,如果我们返回作曲家,让我们为ID为2的吉他发出PUT请求。

对于我们要发送的数据,制造商将是Fender,但让我们将模型从分层更改为电视广播。 现在如果没有Api令牌,这将不起作用。 因此,无论何时执行,我们都会得到401。但是让我们添加Api-Token,然后添加值,鸟类飞向南方,该请求将返回200。

因此,仅出于完整性考虑,我们进行DELETE请求。 让我们删除ID为1的吉他。我们应该得到200,然后重新发出检索所有吉他的请求。 我们应该只有一个,ID应该为2。品牌是Fender,模型是电视广播员。

因此,向Lumen应用程序添加身份验证非常非常简单。 除了添加中间件之外,您必须编写的大部分代码都在AuthServiceProvider类的内部。 您必须编写负责验证用户身份的代码,但是一旦完成,您便拥有了安全的API。

观看完整课程

在整个课程中,“ 使用Lumen创建REST API” ,我将向您展示如何开始使用Lumen框架构建REST API。 您将从设置Lumen开发环境开始,然后继续为音乐商店构建完整的API,包括路由,MySQL数据库连接性和安全性。

翻译自: https://code.tutsplus.com/tutorials/how-to-secure-a-rest-api-with-lumen--cms-27442

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值