与旧的 Membership 机制不同,ASP.NET Identity 提供了一个用于访问当前用户对象的 API。获取方法如下:
在控制器或您有权访问默认用户管理器的其他区域中,您可以使用 FindById 方法:
using Microsoft.AspNet.Identity; public ActionResult Create() { var user = UserManager.FindById(User.Identity.GetUserId()); return View(); }
如果您是外部控制器,则可以使用以下代码:
using Microsoft.AspNet.Identity; using System.Web; public class MyCustomService { private HttpContext _httpContext; public MyCustomService(HttpContext httpContext) { _httpContext = httpContext; } public ApplicationUser GetCurrentUser() { var userId = _httpContext.User.Identity.GetUserId(); var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); return userManager.FindById(userId); } }
从访问当前用户时可能需要此方法OWIN 上下文,例如来自 SignalR Hub 或标准机制不可用的其他场景:
using Microsoft.AspNet.Identity; using System.Web; public class MySignalRHub : Hub { public ApplicationUser GetCurrentUser() { var user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()); return user; } } 以上是如何在 ASP.NET MVC 5 Identity 中检索当前 ApplicationUser?的详细内容。更多信息请关注PHP中文网其他相关文章!