如何获得当前用户,以及如何使用User类的MVC5

2022-04-18 科技 51阅读
1.我找到了答案。我会接受这个答案时,我设法创建基于这些一个完全工作的解决方案。
●编号:
usingMicrosoft.AspNet.Identity;
...
User.Identity.GetUserId();

那User.Identity.IsAuthenticated和User.Identity.Name将工作不添加using但GetUserId()将不存在没有它。
在MVC中5的默认模板,用户ID是作为字符串存储一个GUID。
●没有最好的做法还,但在扩展配置文件中找到:
概述Identity:
关于如何通过添加一个额外的属性来扩展配置文件示例解决方案:
2.
尝试像:
varuserManager=newUserManager(newUserStore(newApplicationDbContext()));
ApplicationUseruser=userManager.FindByNameAsync(User.Identity.Name).Result;

适用于RTM。
3.
试试这个:
varuser=Membership.GetUser(User.Identity.Name);
GuidcurrentUserID=(Guid)user.ProviderUserKey;

作品
什么是分配东西的MVC的5个最佳实践
我做在某种程度上你-在项目类中添加用户名。这是simpliest方式。
4.
获取标识是非常简单的,你已经解决了。
你的第二个问题,虽然是一个涉及多一点。
所以,这是所有抢鲜东西的权利CodeGo.net,但你面临的问题是,你正在与新的属性扩展(或项目集合在你的问题)。
开箱即用的,你会得到一个名为IdentityModel在Models文件夹(在撰写本文时)。在那里你有几个班;ApplicationUser和ApplicationDbContext。添加你的收藏Items你要修改ApplicationUser类,就像你,如果这是一个正常的类,你与实体事实上,如果你把引擎盖下咋一看,你会发现,所有的身份相关的类(用户,角色等..),只是现在波苏斯用适当的数据标注,使他们发挥好与EF6。
接下来,你需要做出改变AccountController构造函数,以便它知道你的DbContext。
publicAccountController()
{
IdentityManager=newAuthenticationIdentityManager(
newIdentityStore(newApplicationDbContext()));
}

现在越来越对象为您记录的是一点点深奥是诚实的。
varuserWithItems=(ApplicationUser)awaitIdentityManager.Store.Users
.FindAsync(User.Identity.GetUserId(),CancellationToken.None);

这条线将完成这项工作,你就可以访问userWithItems.Items像你想要的。
心连心
5.
我觉得你的痛苦,我试图做的事。在我来说,我只是想清除
我创建了我所有的控制器从继承一个基控制器类。在这里面我重写OnAuthentication并设置filterContext.HttpContext.Usertonull这是最好的,我已经成功地远...
publicabstractclassApplicationController:Controller
{
...
protectedoverridevoidOnAuthentication(AuthenticationContextfilterContext)
{
base.OnAuthentication(filterContext);
if(...)
{
//Youmayfindthatmodifyingthe
//filterContext.HttpContext.User
//hereworksasdesired.
//InmycaseIjustsetittonull
filterContext.HttpContext.User=null;
}
}
...
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com