【问题标题】:How to use postman or http request to pass a user如何使用邮递员或http请求传递用户
【发布时间】:2020-07-30 00:03:57
【问题描述】:

我有一个 asp.net 核心项目,我的一个字段是通过 User?.Identity?.Name 设置的。我想知道是否有办法通过 http 请求传递身份,而不是登录到网站。我已经问了很多,似乎没有人这样做,尽管对我来说这很有意义,因为网络是无状态的。任何见解都会很有趣。谢谢!

【问题讨论】:

  • 您是否尝试将其添加到请求标头/正文中。你也可以尝试使用cookies。您还可以告诉我通过 User?.Indetity?.Name 设置了什么样的字段?

标签: c# http asp.net-core postman


【解决方案1】:

这取决于您使用的是什么 Auth 服务,如果您在 .net 核心上使用 OAuth 2.0,您需要登录在 http 请求上发送参数,如 UsernamePassword 和然后为其他 http 请求获取 Access Token,以便邮递员可以选择:

【讨论】:

    【解决方案2】:

    这里有很多未知数,因为您的问题实际上并不具体。一般来说,身份验证通常通过以下两种主要方式之一处理:cookie 或 Authorization 标头。

    基于 Cookie 的身份验证是更传统的网络身份验证形式。您在登录页面上提交带有用户名和密码的表单,服务器接收该请求并通过验证凭据来处理它,如果正确,则通过带有加密身份验证票证的 Set-Cookie 响应标头设置 cookie。在每个后续请求中,浏览器通过Cookie 请求头将此cookie 发送回服务器,解密并验证身份验证票证,如果它仍然有效,则“恢复”经过身份验证的会话:即识别经过身份验证的用户。

    API 通常会通过 Authorization 请求标头进行身份验证。客户端通常首先使用一组凭据向身份验证端点发送请求。这可能是用户名/密码,也可能是客户端 ID/密码对等。服务器再次验证凭据,如果有效,则返回包含令牌的响应。然后该令牌与客户端想要通过Authorization 标头(如Authorization: Bearer {token})发出的实际请求一起发送。标题可以采用其他形式。例如,您可以改用基本身份验证,而不是访问身份验证端点,首先,您只需将用户名和密码作为 Base64 编码字符串传递,例如 Authorization: Basic {base64-encoded user:pass}

    长短,是的,总是发送一些东西来“授权”它,无论是cookie还是Authorization标头。但是,您发送的内容及其处理方式取决于应用程序如何处理身份验证,您在此处没有详细说明。您不能只发送带有基本身份验证的 Authorization 标头,例如,如果您的应用没有明确设置为知道它需要查找它并且实际上知道如何处理它。

    如果您使用的是基于 cookie 的身份验证方法,您可以通过将 HTML 表单的相同数据以相同的方式 (x-www-form-urlencoded) 传递到相同的 URL 来模拟提交表单。响应将是用户转到的任何页面的 HTML,但 cookie 将位于 Set-Cookie 处理程序中。您可以捕获它,然后将其发送到您请求的 Cookie 标头中。您可以通过 Postman 之类的工具完成所有这些操作,但无论哪种方式,您都必须通过身份验证过程。

    如果您正在处理 API,那么您应该使用其他形式的身份验证:基本身份验证、承载身份验证等。不过,同样,您需要实际进行设置。

    【讨论】:

    • 感谢克里斯·普拉特!这里有很多很棒的信息。我可能会在不久的将来做一些实验。 PS。在 Parks and Rec 中饰演 Andy Dwyer 时爱你
    猜你喜欢
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 2017-06-17
    • 2018-02-05
    • 2021-03-28
    • 2021-12-14
    • 2019-05-21
    • 2018-10-22
    相关资源
    最近更新 更多