千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 创建身份验证服务器并在后端应用程序中使用它

创建身份验证服务器并在后端应用程序中使用它

来源:千锋教育
发布人:syq
时间: 2022-09-15 11:16:59 1663211819

  今天,我们将讨论如何创建一个仅用于管理身份验证请求的隔离环境,以及如何有效地将其添加为中间件以保护API。

创建身份验证服务器

  我们将遵循的一般想法是,首先,我们将创建一个常规服务器,该服务器将具有一个简单的请求,并且我们需要保护它,因此我们将创建一个中间件来接收标头并确保我们拥有正确的访问权限。我们还将使用API_KEY身份验证来防止内部使用。现在你有了基本的想法,所以让我们开始吧。

  为什么我们需要身份验证服务器?

  您可能想知道为什么我们需要一个身份验证服务器,难道我们不能只在一台服务器中处理吗?显然,您可以,但是当您的应用程序开始增长时,您可能需要将整体式应用程序转移到微服务级别,此策略将帮助您解决问题。

  设计身份验证服务器

  我们将保持简单。在我们的身份验证中,我们不会查看源或网关,而只会查看身份验证令牌和 API 密钥。首先,我创建了一个示例 Express App,其中我们刚刚导入了路由,并在存在解析器的情况下使用了默认错误处理。

介绍417

  快速应用程序

  甚至身份验证服务器也需要保护,因此我们还将定义一个中间件规则来保护它。对于此示例,我使用的API_KEY但您也可以创建 oAuth 或基本身份验证。为了使用它,我创建了一个文件,里面有一个中间件,它将检查API_KEY,如果使用虚拟数据源出现任何问题,则会抛出错误。

介绍881

  接口密钥中间件

  在这里,我们使用我们的虚拟数据源检查API KEYS是否存在且有效,如果情况失败,则抛出错误,否则从路由调用下一个控制器

  现在,我们有一个中间件设置,我们实际上可以从API开发开始。我们将仅创建2条路线,但您可以根据需要创建任意数量的路线

  登录

  验证

  我已经创建了一个实用程序文件,该文件将创建或验证令牌,以便我们可以直接使用控制器中的方法。我正在使用软件包来生成或验证,但您可以使用您喜欢的软件包jsonwebtoken

介绍1103

  Jwt 实用程序函数

  在这里,我们只使用和方法,但理想情况下,您还应该使用方法使您的应用程序为过期的令牌做好准备,然后该过程signverifydecode

  从现在开始,我们已经设置了所有内容,让我们创建路由

介绍1210

  路线

  在这里,我们导入了所有依赖项,并创建了登录和验证的路由。在 login API 中,您可以执行任何与数据库相关的操作,然后有条件地生成令牌,但在此示例中,我跳过了该部分并直接从 发送令牌。另一方面,为了验证,我们获取授权标头,然后使用方法来验证令牌是否有效。req.body.payloadverifyToken

  如果一切正常,那么在运行服务器和API后,我们将收到以下输出:

介绍1404

  就是这样,我们的身份验证服务器已准备好响应。下一步是在任何其他微服务应用程序中使用此服务

  使用身份验证服务

  要使用我们刚刚创建的身份验证服务,我们需要使用 HTTP 请求提供程序。我要使用Axios,但您可以选择您选择的任何提供商

  我写了一篇文章,它将帮助我们创建和使外部API调用更加敏捷。以下是本文的链接,我建议您也阅读有关此内容的信息。

  如何处理公理和节点J中的不同端点

  为 Axios 创建基于类的实例并有效使用它们。

  javascript.plainenglish.io

  服务生成器

  我们将首先创建一个生成器类,该类将处理所有请求的逻辑:api_key

介绍1855

  身份验证服务生成器

  在这里,我们创建了一个类,该类将API_KEY作为构造函数参数。此类将创建一个具有标头和标头中的 axios 实例,并设置为任何 API 的超时。除了属性之外,我们还将公开将调用我们为身份验证服务创建的 API 的方法。baseURL api_key 10000ms login verify

  除了生成器之外,我们还将创建一个文件,该文件将创建此类的实例并向我们公开该方法:index.js

介绍2059

  实例创建

  就是这样,我们有一个将与auth服务交互的类,并将负责管理更改单例。

  创建验证中间件

  现在,我们已经有了服务。下一步是创建一个中间件,为我们处理验证:

介绍2142

  身份验证服务中间件

  在这里,我们创建了一个中间件,它将从req对象中提取标头并将其传递给我们之前创建的方法。verify

  创建路由

  该过程的最后一步是创建路由并使用中间件。首先,我们需要导入我们创建的中间件,然后在任何测试路线上使用它。通过的情况下,所有未经授权的请求都将被阻止,只有授权的请求才能访问API。

介绍2300

  创建路线

  要测试此 API,我们需要传递在 API 上获得的授权令牌,并将其传入此处。我们不需要通过,因为它对服务级别有限制。loginapi_key

介绍2378

  失败案例场景

  如果我们没有传递令牌或传递格式错误的令牌,则会导致未经授权的请求。

介绍2421

  通过案例场景

  微服务架构的传递案例场景

  我们为微服务创建了 2 个服务体系结构,但您可以增加服务以使用身份验证服务,它将在复制处理程序时完美运行。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT
开班信息
北京校区
  • 北京校区
  • 大连校区
  • 广州校区
  • 成都校区
  • 杭州校区
  • 长沙校区
  • 合肥校区
  • 南京校区
  • 上海校区
  • 深圳校区
  • 武汉校区
  • 郑州校区
  • 西安校区
  • 青岛校区
  • 重庆校区
  • 太原校区
  • 沈阳校区
  • 南昌校区
  • 哈尔滨校区