In order to set the Author property of an Article entity to the current authenticated user, it is crucial to retrieve the full ApplicationUser object.
Using the identity extension, you can effortlessly retrieve the current user using the following code:
ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == User.Identity.GetUserId());
However, this approach has drawbacks. It requires direct database querying, introducing additional dependencies and potential inconsistencies with future database changes.
To overcome these limitations, use the UserManager class provided by the ASP.NET Identity framework:
var user = UserManager.FindById(User.Identity.GetUserId());
This method efficiently retrieves the current user without the need for direct database access. It ensures consistency with future API changes and eliminates the risk of introducing new context dependencies.
When accessing the user object outside of a controller, retrieve the user ID from the current HttpContent's OwinContext:
ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId());
This approach ensures synchronization with the user management provided by OWIN.
The above is the detailed content of How to Efficiently Retrieve the Current ApplicationUser in ASP.NET MVC 5 Identity?. For more information, please follow other related articles on the PHP Chinese website!