【发布时间】:2015-08-20 09:58:05
【问题描述】:
我正在构建一个 ASP.NET MVC 应用程序,需要获取和编辑当前登录该应用程序的用户。我使用 IdentityModel 中的构建并在 AccountController 上编写了几个 get 和 edit 方法,其方式与此处介绍的类似:How to get current user, and how to use User class in MVC5?
AccountController 方法:
[NonAction]
public async Task<ApplicationUser> getCurrentUser(string userid)
{
var user = (ApplicationUser)await UserManager.FindByIdAsync(userid);
return user;
}
[NonAction]
public async Task<int> editCurrentUser(ApplicationUser user)
{
await UserManager.UpdateAsync(user);
return 1;
}
我的问题是当我尝试从另一个控制器调用它们时,在本例中是从 payments 控制器更新balance 属性:
var currentUser = await Controllers.AccountController.getCurrentUser(User.Identity.GetUserId());
因为 AccountController getCurrentUser 和 editCurrentUser 不是静态的,我无法从类中访问它们。很明显,但是 MVC 应用程序在哪里创建 AccountController 的实例以及如何访问它?
或者,是否有更好的方法来检索和修改当前用户?
【问题讨论】:
标签: c# asp.net-mvc authentication instance asp.net-identity