【问题标题】:API authentication and authorizationAPI认证和授权
【发布时间】:2023-03-23 13:52:01
【问题描述】:

如果我确实使用了 No Auth 类型,同时我可以在正文中传递令牌,我会请求该令牌并制作自己的过滤器,结果会怎样?

【问题讨论】:

    标签: c# .net rest api asp.net-core


    【解决方案1】:

    这完全取决于你。但我不建议在正文中传递令牌。

    在发布请求中,您必须将一些数据与令牌一起传递,然后您的请求正文将如下所示

    {
    "Token":"sdfjklsklfjsdkljfskljflskjfskljflsdk",
    "data":{
             "FirstName":"Pankaj",
             "LastName":"Rawat"
      }
    }
    

    C# Employee.cs

    Public class Employee
    {
    public string FirstName {get; set;}
    public string LastName {get; set;}
    }
    

    您将无法将您的帖子数据直接映射到您的类型对象,并且您需要编写额外的代码来将令牌和数据分开。

    大多数时候,我们在方法体中传递所有大的 JSON 参数,每次你需要反序列化你的请求体来获取令牌(即使令牌无效或不存在)

    您可以编写自己的身份验证过滤器,但您应该在请求标头中传递令牌

    【讨论】:

      【解决方案2】:

      如果您不喜欢内置的授权和/或身份验证库,最好找一个替代的授权和/或身份验证库。如果有一些关于默认身份验证配置的内容,则可能有一种方法可以更改这些默认设置——ASP.NET Core 授权和身份验证已得到极大改进,以支持大多数常见场景。我建议为这两个功能项选择一个预先存在的库,并在遇到问题时发布有关它们的问题。

      【讨论】:

        【解决方案3】:

        将来,您可能需要为不同的内容类型案例添加多个后备。现在假设您将正文中的数据作为 json 字符串 传递,然后希望在使用 form-data (支持文件)的新 API 中处理身份验证,然后您最终会处理多个案件。

        我建议您使用 headers 来处理与身份验证相关的信息。 Authorization header

        (使用现有库或构建自己的库由您选择)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-01-12
          • 1970-01-01
          • 2021-05-14
          • 2019-01-09
          • 1970-01-01
          • 2018-07-25
          • 2010-11-14
          相关资源
          最近更新 更多