【发布时间】:2023-03-23 13:52:01
【问题描述】:
如果我确实使用了 No Auth 类型,同时我可以在正文中传递令牌,我会请求该令牌并制作自己的过滤器,结果会怎样?
【问题讨论】:
标签: c# .net rest api asp.net-core
如果我确实使用了 No Auth 类型,同时我可以在正文中传递令牌,我会请求该令牌并制作自己的过滤器,结果会怎样?
【问题讨论】:
标签: c# .net rest api asp.net-core
这完全取决于你。但我不建议在正文中传递令牌。
在发布请求中,您必须将一些数据与令牌一起传递,然后您的请求正文将如下所示
{
"Token":"sdfjklsklfjsdkljfskljflskjfskljflsdk",
"data":{
"FirstName":"Pankaj",
"LastName":"Rawat"
}
}
C# Employee.cs
Public class Employee
{
public string FirstName {get; set;}
public string LastName {get; set;}
}
您将无法将您的帖子数据直接映射到您的类型对象,并且您需要编写额外的代码来将令牌和数据分开。
大多数时候,我们在方法体中传递所有大的 JSON 参数,每次你需要反序列化你的请求体来获取令牌(即使令牌无效或不存在)
您可以编写自己的身份验证过滤器,但您应该在请求标头中传递令牌
【讨论】:
如果您不喜欢内置的授权和/或身份验证库,最好找一个替代的授权和/或身份验证库。如果有一些关于默认身份验证配置的内容,则可能有一种方法可以更改这些默认设置——ASP.NET Core 授权和身份验证已得到极大改进,以支持大多数常见场景。我建议为这两个功能项选择一个预先存在的库,并在遇到问题时发布有关它们的问题。
【讨论】:
将来,您可能需要为不同的内容类型案例添加多个后备。现在假设您将正文中的数据作为 json 字符串 传递,然后希望在使用 form-data (支持文件)的新 API 中处理身份验证,然后您最终会处理多个案件。
我建议您使用 headers 来处理与身份验证相关的信息。 Authorization header
(使用现有库或构建自己的库由您选择)
【讨论】: