【问题标题】:ASP.NET Core authentication - AuthenticateAsync() vs UserASP.NET Core 身份验证 - AuthenticateAsync() 与用户
【发布时间】:2022-11-17 17:19:22
【问题描述】:

我多次偶然发现这样的代码(例如在某些控制器操作中):

var result = await HttpContext.AuthenticateAsync();
if (result.Succeeded)
{
  // Get authenticated user's principal
  var user = result.Principal;
}

如果我们可以通过这种方式访问​​当前用户,在身份验证中间件根据请求验证 cookie 并登录用户后,直接调用 AuthenticateAsync() 有什么好处?

if (HttpContext.User.Identity.IsAuthenticated)
{
  // Get authenticated user's principal
  var user = HttpContext.User;
}

【问题讨论】:

  • 这意味着编写代码的人最初并不理解他们在做什么。
  • “直接拨打AuthenticateAsync()有什么好处”- 假设没什么好笑的正在进行(例如 Kerberos/集成身份验证等)则没有任何好处。
  • AuthenticateAsyncAuthorizeAsync 是针对不同事物的不同方法。
  • AuthenticateAsync 返回的属性比 Principal 多,因此如果您想查看 PropertiesTicket,它会很有用。如果代码仅使用 Principal 属性,则使用 HttpContext.User 实际上是一样的。

标签: c# asp.net-core authentication .net-core middleware


【解决方案1】:

身份验证方案的身份验证操作负责根据请求上下文构建用户身份。它返回一个 AuthenticateResult 指示身份验证是否成功,如果成功,则返回身份验证票证中的用户身份。

你可以检查这个doucment相关的,以及authenticateasync方法的description

【讨论】:

    猜你喜欢
    • 2017-03-30
    • 2018-06-25
    • 2016-05-19
    • 2018-05-13
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    相关资源
    最近更新 更多