-
如何在 MVC 5 中获取当前登录用户的ID?我尝试了StackOverflow的建议,但它们似乎不适用于MVC 5 .
-
另外,为用户分配东西的MVC 5最佳做法是什么? (例如
User
应该有Items
. 我应该在Item
中存储用户的Id
吗?我可以使用List<Item>
导航属性扩展User
类吗?
我正在使用MVC模板中的“个人用户帐户” .
试过这些:
-
Get logged in user's id - 这会引发以下情况:
'Membership.GetUser()'为空 .
6 回答
如果您在ASP.NET MVC控制器中进行编码,请使用
值得一提的是
User.Identity.IsAuthenticated
和User.Identity.Name
可以在不添加上述using
语句的情况下工作 . 但没有它,GetUserId()
将不存在 .如果您在控制器以外的其他课程中,请使用
在MVC 5的默认模板中,用户ID是存储为字符串的GUID .
还没有最佳实践,但在扩展用户配置文件时找到了一些有 Value 的信息:
Identity
概述:http://blogs.msdn.com/b/webdev/archive/2013/06/27/introducing-asp-net-identity-membership-system-for-asp-net-applications.aspx关于如何通过添加额外属性来扩展用户配置文件的示例解决方案:https://github.com/rustd/AspnetIdentitySample
尝试类似的东西:
适用于RTM .
如果您希望将ApplicationUser对象放在一行代码中(如果安装了最新的ASP.NET标识),请尝试:
您需要以下使用语句:
获得ID非常简单,你已经解决了这个问题 .
你的第二个问题涉及到更多 .
所以,现在这都是预发布的东西,但是您面临的常见问题是您使用新属性(或者您的问题中的Items集合)扩展用户 .
开箱即用,您将在Models文件夹下(在撰写本文时)获得一个名为
IdentityModel
的文件 . 在那里你有几个 class ;ApplicationUser
和ApplicationDbContext
. 要添加Items
的集合,您需要修改ApplicationUser
类,就像您使用Entity Framework时的正常类一样 . 事实上,如果你快速浏览一下,你会发现所有与身份相关的类(用户,角色等......)现在都只是POCO,并带有相应的数据注释,因此它们与EF6相得益彰 .接下来,您需要对
AccountController
构造函数进行一些更改,以便它知道使用您的DbContext .现在,为您的登录用户获取整个用户对象是坦率的,说实话 .
该行将完成工作,您将能够像您想要的那样访问
userWithItems.Items
.HTH
我感觉到你的痛苦,我正在尝试做同样的事情 . 在我的情况下,我只想清除用户 .
我创建了一个基本控制器类,我的所有控制器都继承自该类 . 在其中我覆盖
OnAuthentication
并设置filterContext.HttpContext.User to null
那是我迄今为止所做的最好的......