我有一个用户详细信息区域,分为大约 6 个不同的页面(详细信息、联系方式、首选项等)。我需要在登录后访问所有用户详细信息。
我打算在登录后将用户详细信息添加到这样的 session 中,以便我可以从不同的页面访问它们,而不必在每个页面上调用数据库;
Session["name"] = name;
Session["bla"] = bla;
但是我在谷歌上搜索过,有些人谈论将 session 保存到数据库,这听起来我最好不要使用它。用户可能不会访问每个页面或需要访问所有这些信息,因此可能会被认为没有必要将它们全部添加到 session 中。
是否有像这样存储用户信息的推荐做法?我还有一个需要在每个页面上显示的 ID。也许这样的东西对于 session 和更详细的信息页面来说更好,以便与他们自己的数据库调用保持一致?
.
编辑:我正在使用 Umbraco 7.2.8,并从 MemberService 获取成员(member)详细信息。我担心它每次都会访问数据库。我获取成员详细信息以及自定义成员属性(当前在每个 Controller 中)的代码是:
// 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();
任何指针都会很棒!
最佳答案
如果您使用内置的 Umbraco 成员(member)服务( link 1 、 link 2 )来管理您的用户,您将有一个相对简单的方法来获取 current logged in member 。使用自定义数据字段等管理成员(member)资料也很容易。无需过多考虑 session 等问题。
编辑:take a look in here - specifically the GetCurrentPersistedMember() method - Umbraco 正在使用缓存来保存当前成员
关于asp.net-mvc - 用于存储用户信息的 MVC Session 与 DB 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32630306/