我有一个用户详细信息区域,分为6个不同的页面(详细信息,联系人,首选项等)。登录后我需要访问所有用户详细信息。
我打算在登录后将用户详细信息添加到会话中,以便我可以从不同页面访问所有这些,而无需在每个页面上调用数据库;
Session["name"] = name;
Session["bla"] = bla;
但是我用谷歌搜索了一些人谈论将会话保存到数据库,这听起来好像我也可以不使用它。用户可能无法访问每个页面或需要访问所有这些信息,因此将它们全部添加到会话中可能会有点不用。
是否有建议的做法来存储这样的用户信息?我还有一个需要在每个页面上显示的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();
任何指针都会很棒!
答案 0 :(得分:3)
如果您使用内置的Umbraco会员服务(link 1,link 2)来管理您的用户,您将获得一种相对简单的方法来获取current logged in member。使用自定义数据字段等管理成员配置文件也很容易。无需过多考虑会话等。
编辑:take a look in here - specifically the GetCurrentPersistedMember() method - Umbraco正在使用缓存来保存当前成员
答案 1 :(得分:0)
有三种常用的方法可以将数据存储在内存中
1)缓存
2)会议
3)静态类
在上面三个中,我总是喜欢缓存,因为有很多文章建议,我也同意Sessions比Caching&静态类。我总是喜欢缓存会话。
但无论您使用什么,请确保您在单个位置初始化它们,以便每个开发人员都知道整个应用程序中使用的所有会话和缓存。这将有助于代码重用性和减少在系统中再次初始化相同值的重复。它还有助于代码可维护性。