18

如何获取登录用户的 UserId?我正在使用标准系统生成的 AccountModel。我可以使用以下方式获取用户名:

User.Identity.Name

但我没有看到 UserId 字段。我想使用 UserId 作为另一个表的外键。

4

4 回答 4

26

试试这个:

using Microsoft.AspNet.Identity;
User.Identity.GetUserId();

这就是它在当前 MVC (MVC5/EF6/VS2013) 模板的部分视图中的完成方式。

如果我错了,请纠正我,因为我已经看过很多 Aviatrix 的答案,但是如果多个用户在数据库中具有相同的名称会发生​​什么?

于 2013-12-04T03:09:10.343 回答
15

我认为您正在寻找ProviderUserKey - 从用户的会员数据源获取用户标识符。

object id = Membership.GetUser().ProviderUserKey

Membership.GetUser() - 从数据源获取信息并更新当前登录的会员用户的上次活动日期/时间戳。

于 2012-12-21T18:09:33.053 回答
10

最好的方法是使用 WebSecurty 类

var memberId = WebSecurity.GetUserId(User.Identity.Name);

并且不要忘记[InitializeSimpleMembership]在控制器顶部添加:)

于 2012-12-21T21:11:48.083 回答
0

他们已经是很好的答案,但我从你的问题中了解到你想使用 id 从数据库中获取数据。所以这就是你可以做的。

public List<ForeignkeyTable> RV()
{
 var email = User.Identity.Name;

Usertable m = db.Uusertables.Where(x => x.user_Email == email).SingleOrDefault();

 var id = m.user_Id;

var p = db.ForeignkeyTable.Where(x => x.user_fk_id == id).ToList();


return p;

}

这样您就可以在外键中返回该 id 的数据库中的所有数据。

于 2019-07-19T08:10:07.733 回答