ios - Vapor 代码解释有困难,执行时出现401错误
问题描述
在https://github.com/thomashbailey/vapor-auth观看本教程后,我正在练习蒸汽服务器。从代码中可以看出,createUser 表现不错,但是如果你尝试登录,就会弹出 401 错误,我问你一个问题。
不是登录时会给出token的code吗?我不知道。如果你让我知道,我将不胜感激。
解决方案
好吧,服务器似乎是HTTP 基本身份验证方案的演示。
您必须先创建一个用户并提供密码。
完成此操作后,在访问受保护资源时,您需要通过提供 HTTP“授权”标头来验证请求。
这可以通过“抢先”在您的请求中设置请求标头“授权”来完成,如下所示:
将用户名和密码用冒号“:”隔开,并进行base64编码。然后设置“Authorization”请求头,如下伪代码所示:
Authorization: "Basic" + " " + base64("\(username):\(password)")
另一种方法是401 (not authorised)
通过分析“WWW-Authentication”响应标头来处理状态码,当您没有设置“Authorization”标头时,该标头会出现 401。这在提到的 RFC 中有详细解释。
请注意,HTTP 客户端(包括 Postman)确实有助于设置基本授权方案。您会在 Postman 本身中轻松找到这一点。
编辑
您现在可能会注意到,每次发送请求时都必须清楚地发送用户名和密码。
这当然应该敲响警钟。事实上,基本 HTTP 身份验证因其漏洞而被弃用。您当然应该使用 HTTPS,以防止通过网络以明文形式发送数据——尽管如此,每次请求都发送密码应该让我们感到不满。
更现代和更安全的方案是使用不记名令牌,例如在 OAuth 或 OIDC 中。
推荐阅读
- python - 从python中的节点列表构建完整路径
- .net - 如何在 startup.cs 中将 VaryByQueryKeys = new[] { "*" } 设置为全局?
- c# - 如何使用 C# 从 Windows Temp 文件夹中删除所有文件?(进程运行时)
- flutter - 如何创建如下所示的水平可滚动 GridView 并根据 Text 动态更改 Container(GridTile) 的大小?
- php - “富文本编辑器”首次提交时出现 WordPress CF7 验证错误
- python - 使用 Selenium 抓取 Java 重的网站 - 返回无
- python - 反正有2个timesliderchoropleth使用layercontrol
- python - 创建 venv 时出错,错误:命令 '-Im'、'ensurepip'、'--upgrade'、'--default-pip']' 返回非零退出状态 1
- javascript - Bot 与我没有的硝基表情符号发生反应
- python - 如何解决三角形格式列表元素之和的问题