![](/img/trans.png)
[英]ASP.NET MVC 5 - Identity. How to get current ApplicationUser
[英]ASP.net identity: How to get current IdentityUser (ApplicationUser)? Where is UserManager.FindById?
我从VS2013中的ASP.net默认模板开始。 我想获取当前的用户对象。 这可以在不直接访问数据库的情况下实现。
在文档中,这看起来非常简单: http : //blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013 -templates.aspx
所以它应该是
var currentUser = manager.FindById(User.Identity.GetUserId());
但是缺少FindById! 几个小时后,我一直在尝试使用FindByIdAsync。 但我想我得到了死锁。
public class UserManager : UserManager<IdentityUser>
{
public UserManager()
: base(new UserStore<IdentityUser>(new ApplicationDbContext()))
{
}
public async System.Threading.Tasks.Task<IdentityUser> GetCurrentUser()
{
var user = await FindByIdAsync(HttpContext.Current.User.Identity.Name);
return user;
}
}
调用的属性:
private IdentityUser_CurrentUser;
protected IdentityUser CurrentUser
{
get
{
if (_CurrentUser == null)
{
var manager = new UserManager();
var result = manager.GetCurrentUser();
//-- STOPS HERE!!
_CurrentUser = result.Result;
}
return _CurrentUser;
}
}
任何帮助,将不胜感激! 要么向我展示FindById已经消失或如何使我的代码工作。 或者是否有另一种加载IdentityUser的方法?
添加
在用户管理器中, FindById
,但找到this.FindById
。 我将添加截图。 这不是一个正确的解决方案,因为我不明白,为什么会发生这种情况,或者有人可以解释这种行为? 我附上两个智能感知屏幕。 我还想提一下,这不是intellisense的问题 - 如果我不添加this.
,代码就不会编译this.
智能感知输入“Fi”:
。
Intellisense进入“this.Fi”:
这样,至少我不再被困了。
FindById
是一个来自Microsoft.AspNet.Identity.UserManagerExtensions
类的扩展方法。 它是Microsoft.AspNet.Identity.Core
nuget包的一部分。
你应该添加
using Microsoft.AspNet.Identity;
您的代码开始使用非异步方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.