提问者:小点点

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


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

不是登录时给代币的代码吗?我不知道.如果你能告诉我,我将不胜感激。


共1个答案

匿名用户

这个服务器似乎是HTTP基本身份验证方案的演示。

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

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

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

组合用户名和密码,用冒号“:”分隔,并用base64编码。然后设置“授权”请求头,如伪代码所示:

授权:“basic”+“”+base64(“\(用户名):\(密码)”)

另一种方法是通过分析“WWW-Authentication”响应头来处理401(not authorized)状态代码,当您没有设置“authorization”头时,该响应头随401而来。在提到的RFC中对此进行了详细解释。

请注意,HTTP客户端(包括Postman)确实有助于设置基本授权方案。你会很容易在《邮递员》中发现这一点。

编辑

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

这当然应该敲响警钟。事实上,由于基本HTTP身份验证存在漏洞,因此不推荐使用它。当然,您应该使用HTTPS,以防止在有线上以清晰的方式发送数据--尽管如此,在每一个请求中发送一个密码会使我们感到不满。

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