我正在开发一个Asp.net(MVC,但这并不重要)应用程序。我有一个自定义的IHttpModule负责PostAuthenticateRequest以更改用户主体的身份。请求之间持久化/缓存数据 - 常用方法
我在用户登录时将用户ID和用户名存储在身份验证cookie中。我有一个IUser(由DAO和Business Objects层实现,每个都有自己的额外成员),我需要所有的Business Service类。当用户需要任何东西时,我必须提供IUser对象实例(通常来自Business Objects层),因此从身份验证票证提供ID是不够的。
所以我在想如何以及在哪里最好坚持登录用户的IUser数据?
- 我不想每次从数据库中获取它(基于身份验证票证的用户ID数据)
- 我不能把它存储在会话,因为我不得不在屋里PostAuthenticateRequest,其中会话ISN”工作准备好面对尚未
- 我希望所有的功能,我自定义的内封装的IHttpModule
的选择,我看到:
- 缓存
- 饼干
- (会话) - 由PostAuthenticateRequest移动到PostAcquireRequestState事件和变更主/身份出现,但我想避免这种
过程似乎使事情变得复杂是:
- 用户登录项,用户数据是从DB中取出并以某种方式持续购买请求
- 用户登录手续,用户数据已经被从持久介质自动魔法除去LY
- 用户更改自己的配置文件,用户数据将被废弃,并从DB
我wan't这一切要由HTTP模块自动处理(如果可能的话)消除开发人员的错误重读的下一个请求忘记重置这些东西。
我也不想要的是写/读一些硬编码的变量/键,并在应用程序的其他部分操纵它们。这只会造成技术债务。
问题
- 你有什么建议?
- SO如何在请求之间保持用户数据?