首页 > 解决方案 > Vapor 代码解释有困难,执行时出现401错误

问题描述

在https://github.com/thomashbailey/vapor-auth观看本教程后,我正在练习蒸汽服务器。从代码中可以看出,createUser 表现不错,但是如果你尝试登录,就会弹出 401 错误,我问你一个问题。

我正在向邮递员发送服务器请求,我应该如何发送? 在此处输入图像描述

不是登录时会给出token的code吗?我不知道。如果你让我知道,我将不胜感激。

标签: iosswiftservervapor

解决方案


好吧,服务器似乎是HTTP 基本身份验证方案的演示。

您必须先创建一个用户并提供密码。

完成此操作后,在访问受保护资源时,您需要通过提供 HTTP“授权”标头来验证请求。

这可以通过“抢先”在您的请求中设置请求标头“授权”来完成,如下所示:

将用户名和密码用冒号“:”隔开,并进行base64编码。然后设置“Authorization”请求头,如下伪代码所示:

Authorization: "Basic" + " " + base64("\(username):\(password)")

另一种方法是401 (not authorised)通过分析“WWW-Authentication”响应标头来处理状态码,当您没有设置“Authorization”标头时,该标头会出现 401。这在提到的 RFC 中有详细解释。

请注意,HTTP 客户端(包括 Postman)确实有助于设置基本授权方案。您会在 Postman 本身中轻松找到这一点。

编辑

您现在可能会注意到,每次发送请求时都必须清楚地发送用户名和密码。

这当然应该敲响警钟。事实上,基本 HTTP 身份验证因其漏洞而被弃用。您当然应该使用 HTTPS,以防止通过网络以明文形式发送数据——尽管如此,每次请求都发送密码应该让我们感到不满。

更现代和更安全的方案是使用不记名令牌,例如在 OAuth 或 OIDC 中。


推荐阅读