为了账号安全,请及时绑定邮箱和手机立即绑定

下载前验证请求

下载前验证请求

Go
慕妹3242003 2021-08-16 15:30:15
我正在尝试创建一个网络服务,它将发送和接收大文件,作为远程备份存储解决方案的一部分。当网络服务器收到请求时,它需要在存储数据之前进行身份验证。目前我正在考虑在标题中发送身份验证方法和正文中的实际内容。相当标准。但是我想知道,由于主体的大小,如果无法验证请求,是否可以验证标头,并可能在完全接收主体之前响应请求/断开连接?我还没有开始实施,但我倾向于使用 Golang 实现。前面会有一个 nginx 服务器,以防万一。编辑:也许我在最初的问题中还不够清楚,但主要焦点应该是:是否有可能在接收整个有效负载之前确定请求是否经过身份验证,如果不是这种情况,可能会断开连接/响应?就像.. 是否可以将请求解释为流,您可以在其中仅对第一部分进行操作,即使有效负载的其余部分尚未到达。对困惑感到抱歉。
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

如果您将文件作为请求正文发布,则可以使用 auth 标头进行验证,而无需等待文件完全上传。

然后,您可以使用 io.Copy 从请求正文复制到文件。

_, err := io.Copy(someFile, req.Body)

不要使用“multipart/form-data”,如果你这样做,http pkg 会妨碍你。将文件作为正文发布将使您可以以流的形式访问请求正文的内容,而 io.Copy 将以合理的方式管理文件的副本。


查看完整回答
反对 回复 2021-08-16
?
LEATH

TA贡献1936条经验 获得超6个赞

我想知道,由于正文的大小,如果无法验证请求,是否可以对标头进行身份验证,并可能在完全接收正文之前响应请求/断开连接?

这就是身份验证的工作方式:获取请求的 url之前验证用户。

您可以通过任何身份验证中间件来完成,例如:

  • abbot/go-http-auth和 http 标头

  • p/goauth2和基于文件的缓存凭据

更多关于“ Go web 应用程序的最终用户身份验证”中的身份验证替代方案。


查看完整回答
反对 回复 2021-08-16
  • 3 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信