如何存储IPrincipal-extension的额外属性

时间:2012-12-04 03:55:43

标签: c# asp.net-mvc forms-authentication

我正在尝试扩展IPrincipal。存储额外属性的最佳方法是什么?

  1. 将它们序列化为Cookie并在每个Application_PostAuthenticateRequest
  2. 上反序列化
  3. 将它们存储在会话中
  4. 在每个Application_PostAuthenticateRequest
  5. 上发出数据库请求

1 个答案:

答案 0 :(得分:0)

就我而言,我选择了第一个选项,因为它代表了将信息整合到现有身份验证工作流程中的最简单(也是最有效)的方法。

我认为您的答案将取决于您想要存储的额外属性的性质。

  1. 如果信息经常更改并且您的Cookie过期时间过长,则将它们存储在Cookie中可能会出现问题。在这种情况下,您可能希望实现一些过期cookie的逻辑。
  2. 当会话超时后请求进入时,使用会话将要求您刷新存储的属性 - 这可能比cookie过期更频繁地发生。
  3. 根据流量,每个Application_PostAuthenticateRequest上的数据库请求可能效率低下,但这样做会确保您始终拥有最新数据。