【发布时间】:2015-12-14 07:42:48
【问题描述】:
我有一个用户详细信息区域,该区域分为大约 6 个不同的页面(详细信息、联系方式、偏好等)。我需要在登录后访问所有用户详细信息。
我打算在登录后将用户详细信息添加到这样的会话中,这样我就可以从不同的页面访问它们,而不必在每个页面上调用数据库;
Session["name"] = name;
Session["bla"] = bla;
但是,我在 google 上搜索过,有些人谈论将会话保存到数据库,听起来我可能不使用它。用户可能不会访问每个页面或需要访问所有这些信息,因此将它们全部添加到 Session 可能被视为有点不必要。
是否有推荐的做法来存储这样的用户信息?我还有一个需要在每一页上显示的 ID。也许这样的东西更适合会话和更详细的信息页面以与他们自己的数据库调用保持一致?
.
编辑:我正在使用 Umbraco 7.2.8 并从 MemberService 获取成员详细信息。我担心它每次都会访问数据库。我获取成员详细信息以及自定义成员属性(当前在每个控制器中)的代码是;
// Get the details of the user currently logged in
var profileModel = Members.GetCurrentMemberProfileModel();
// Get the custom properties for the member
var member = memberService.GetByUsername(profileModel.UserName);
model.Firstname = profileModel.Name;
model.Email = profileModel.Email;
model.specialID = member.Properties["specialID"].Value.ToString();
任何指针都会很棒!
【问题讨论】:
-
如果您将项目更新到 MVC5 并使用 Microsoft 的新身份验证库,您可以将信息添加到经过身份验证的身份的声明集合中。
-
将数据存储在 Session 中以避免调用数据库是一种很好的做法,尤其是对于不经常更改的数据。过度使用
Session并在那里放置太多数据会导致问题(应用程序池将被强制回收,所有会话都会过期),这会导致更多问题。
标签: asp.net-mvc asp.net-mvc-4 session umbraco