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

 我来答
就烦条0o
2016-05-04 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
1. 我找到了答案。我会接受这个答案时,我设法创建基于这些一个完全工作的解决方案。
●编号:
using Microsoft.AspNet.Identity;
...
User.Identity.GetUserId();

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

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

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

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

这条线将完成这项工作,你就可以访问userWithItems.Items像你想要的。
心连心
5.
我觉得你的痛苦,我试图做的事。在我来说,我只是想清除
我创建了我所有的控制器从继承一个基控制器类。在这里面我重写OnAuthentication并设置filterContext.HttpContext.User to null这是最好的,我已经成功地远...
public abstract class ApplicationController : Controller
{
...
protected override void OnAuthentication(AuthenticationContext filterContext)
{
base.OnAuthentication(filterContext);
if ( ... )
{
// You may find that modifying the
// filterContext.HttpContext.User
// here works as desired.
// In my case I just set it to null
filterContext.HttpContext.User = null;
}
}
...
}
xiangjuan314
2016-05-04 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2920万
展开全部
// 用户 public class User{ public int ID {get;set} public string Name {get;set;} public string Password {get;set;} }// 覆盖ClaimsIdentityprivate ClaimsIdentity CreateIdentity(User user, string authenticationType){ ClaimsIdentit
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式