Vapor 解释代码有困难,执行时出现401错误

问题描述

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

我正在向邮递员发送服务器请求,我应该如何发送?

enter image description here

登录的时候不是给令牌的代码吗?我不知道。如果您让我知道,我将不胜感激。

解决方法

好吧,服务器似乎是 HTTP Basic Authentication Scheme 的演示。

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

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

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

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

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

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

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

编辑

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...