管理用户特定参数

时间:2010-11-09 22:11:54

标签: c# asp.net

有谁能给我一个关于如何管理asp.net中每个用户的偏好的想法? 例如,我为所有用户提供了几个参数,并且它们与用户相对应 例如,他的生日或他的工资,我经常需要这些特定的参数,我把它们保存在我的数据库中,我不想每次需要时都取它们 非常感谢

4 个答案:

答案 0 :(得分:3)

通常这些将被提取一次并存储在会话状态中。一些警告:

1)注意你在会话中存储的数量。每个用户必须达到几KB(

2)对于服务器场,您必须使用粘性会话或将会话存储在SQL或状态服务器中

3)注意会话劫持并确保不存储重要内容

4)如今,去数据库获取一些记录很便宜,不要自动敲门!

答案 1 :(得分:0)

我的回答是不要担心您最初如何存储所需信息,但担心您需要哪些信息以及您打算如何使用这些信息。创建用户信息对象并在代码中使用它。当您准备测试时,将用户对象插入数据存储。他们想要的信息类型通常存储在数据库中,但这不是一个硬性规则。

答案 2 :(得分:0)

如何扩展框架提供的Profile功能?

答案 3 :(得分:0)

通常这会存储在会话状态中,但我想谈谈关注点分离。例如,您可以创建存储库接口:

public interface IProfileDataRepository 
{
    ProfileData GetProfileData(Guid userId);
}

然后使用依赖注入来获取在需要的地方实现此接口的对象,因此您可以像这样检索它:

var profileData = ProfileDataRepository.GetProfileData(currentUserId);

您可以首先为此存储库创建一个实现,每次需要时都会将此数据从数据库中提取出来。然后,您可以更改实现,以便将数据存储在会话中或内存缓存中。数据可能来自XML文件,SSO服务或您可以想到的任何其他来源。因为您首先要定义要求信息(界面)的方式,所以您可以随时更改实际存储方式。如果数据太大而不适合会话,您可以将其移动到其他地方,而如果您已经开始乱丢代码:

var profileData = (ProfileData)Session["ProfileData"];

......在你所做的每一个地方改变都会是一个巨大的痛苦。