在 Asp.Net 核心的方法或构造函数中获取用户?

Get User in method or constructor in Asp.Net Core?

我有一个 Asp.Net 核心 API 控制器,我在其中使用以下方法获取用户实例:

 var user = await userManager.GetUserAsync(User);

我想知道,是将登录用户分配给控制器中的用户变量更好,还是我在每个方法中都这样做?

请注意某些方法可能具有 [Authorize] 属性。

谢谢

每当访问路由时,控制器将被创建为短期对象。因此,从技术上讲,与 运行 构造函数中的某些代码或 every 操作中的某些代码没有区别。

也就是说,您不能在构造函数中 await,因此这可能更适合操作。此外,通过在构造函数中不包含此内容,您可以让操作 选择 在他们实际需要时执行此操作,而不是一直 运行 它。

即使您最终在每个操作中都获得了用户对象,也只需考虑使用表单 post 首先验证内容:您可以验证 posted 视图模型 before 检索用户对象,因此您可以显示错误而无需实际查找用户。所以只在真正需要的时候才获取用户。