老实说,我不明白基于asp.net核心的Web应用程序是如何工作的。现在我正试图一点一点地弄清楚它在幕后的作用。
让我们考虑选择Individual User Account
的默认模板。更确切地说,在ManageController
类中如下。
namespace StackOverflow.Controllers
{
[Authorize]
[Route("[controller]/[action]")]
public class ManageController : Controller
{
// others are trimmed for the sake of simplicity
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> EnableAuthenticator(EnableAuthenticatorViewModel model)
{
// ..........
var user = await _userManager.GetUserAsync(User);
// ........
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> ResetAuthenticator()
{
var user = await _userManager.GetUserAsync(User);
//.......
}
[HttpGet]
public async Task<IActionResult> GenerateRecoveryCodes()
{
var user = await _userManager.GetUserAsync(User);
// ..........
}
}
声明
var user = await _userManager.GetUserAsync(User);
几乎出现在每个动作方法中。
为什么我们必须为每个操作方法调用await _userManager.GetUserAsync(User)
?为什么我们不把它作为一个类属性?