登录时存储用户信息的选项

时间:2013-06-06 20:22:42

标签: c# asp.net-mvc-4

在登录我的mvc4网站时维护用户数据有哪些选项?我正在构建Internet应用程序模板,现在我使用User.Identity.Name来获取用于登录的用户的用户名。我希望能够在网站的每个页面上存储和访问有关用户的其他几条信息。我还能以某种方式使用User.Identity并应用其他属性吗?我开始构建一个ProfileModel我可以传递给视图,但后来我不相信我能够将其他模型传递给那些视图,不确定。

就持久用户数据而言,我愿意接受建议,并感谢您的帮助。

编辑1:当我说持久性时,我的意思是当他们登录时,数据本身已经存储在外部数据库中,所以我不会写任何信息,只需从数据库中提取,然后在登录期间保持它。

1 个答案:

答案 0 :(得分:4)

您需要利用Session。请考虑以下代码:

Session["Profile"] = profileObj;

或者你可能只想存储一个字符串:

Session["SomeSetting"] = value;

您需要在Session中存储的内容尚不清楚,并且实际上无关紧要,您可以存储任何内容。您可以从任何Session访问Controller

然后你可以得到这样的价值:

var profile = Session["Profile"];

// if the profile variable is null then it doesn't exist in Session yet

为了响应@AaronLS,Session持续用户首次访问站点时创建的IIS会话的持续时间。请记住,如果这些会话在一段时间内处于非活动状态(我相信默认的IIS超时为20分钟),则会重置这些会话,因此您需要利用null返回值来了解您需要重定向用户到登录页面再次登录。