【发布时间】:2009-08-11 23:48:27
【问题描述】:
我正在开发一个 Asp.net(MVC,但这并不重要)应用程序。我有一个自定义 IHttpModule 负责 PostAuthenticateRequest 更改用户主体和身份。
当用户登录时,我将用户 ID 和用户名存储在身份验证 cookie 中。我有一个 IUser(由 DAO 和业务对象层实现,每个都有自己的附加成员),我需要整个业务服务类。当用户想要任何东西时,我必须提供 IUser 对象实例(通常来自业务对象层),因此提供身份验证票证的 ID 是不够的。
所以我正在考虑如何以及在哪里最好地保留登录用户的 IUser 数据?
- 我不想每次都从数据库中获取它(基于身份验证票的 UserID 数据)
- 我无法将其存储在 Session 中,因为我必须在 PostAuthenticateRequest 中工作,而 Session 尚未准备好
- 我希望将所有功能封装在我的自定义 IHttpModule 中
我看到的选择:
- 缓存
- 饼干
- (会话)- 通过从 PostAuthenticateRequest 移动到 PostAcquireRequestState 事件并在那里更改主体/身份,但我想避免这种情况
似乎使事情复杂化的过程是:
- 用户登录,从数据库中获取用户数据并以某种方式持久化以供以后请求
- 用户注销,用户数据必须自动从持久化介质中删除
- 用户更改了自己的个人资料,用户数据必须被丢弃并在下次从数据库请求时重新读取
我不希望所有这些都由 HttpModule(如果可能的话)自动处理,以消除开发人员忘记重置这些东西的错误。
我也不想要写/读一些硬编码的变量/键并在应用程序的其他部分操作它们。这只会带来技术债务。
问题
- 您有什么建议?
- SO 如何在请求之间保留用户数据?
【问题讨论】:
标签: asp.net-mvc forms-authentication persistence user-data