MVC3 - 获取经过身份验证的用户部门名称

时间:2011-08-25 21:55:11

标签: c# asp.net-mvc-3 authentication

在我的应用程序中,我有一个db表,其中包含一个Users列表和一个相关的Departments表。只要User模型是我正在操作的当前对象的属性(从数据库中检索),我就没有问题'向下钻取'来访问用户的部门名称......或任何其他属性的信息用户obj。

我希望能够在当前经过身份验证的用户身上执行相同类型的数据访问....这显然是一个完全不同的模型。任何人都可以告诉我是否有办法将属性附加到经过身份验证的用户模型,或者至少将其绑定到现有对象?

提前感谢您的帮助!

更新: 我想澄清一下,我在谈论User AuthCookie。

2 个答案:

答案 0 :(得分:4)

有一个名为FormsAuthenticationExtensions的NuGet包,它简化了在您的身份验证cookie中插入自定义数据所需的代码。

例如,要存储数据,请执行以下操作:

var ticketData = new NameValueCollection
{
    { "name", user.FullName },
    { "emailAddress", user.EmailAddress }
};
new FormsAuthentication().SetAuthCookie(user.UserId, true, ticketData); 

并将其取回:

var ticketData = ((FormsIdentity) User.Identity).Ticket.GetStructuredUserData();
var name = ticketData["name"];
var emailAddress = ticketData["emailAddress"]; 

答案 1 :(得分:1)

是的,您可以向身份验证cookie添加其他信息,但您需要自己生成FormsAuthenticationTicket和cookie。

设置用户数据的一个很好的例子是here

以及将其取回的示例是here