我正在使用我的自定义IPrincipal,因为我需要一些额外的字段,例如id和密码(记录到外部wcf服务)。我在Application_PostAuthenticateRequest事件中设置主体,但必须在每个请求上完成。我想在某个地方缓存它,但它的最佳解决方案是什么?会话无法使用。我有密码,所以我不想使用FormsAuthenticationTicket,即使它是加密的。 HttpContext.Current.Items仅为一个请求存储值。每个用户都可以使用对象Application和Cache。还有什么其他可能性?
答案 0 :(得分:1)
存储可能无限量的自定义信息的最佳选择是cookie。但请记住,Forms表单的大小有限,如果超出大小,基础结构就无法正常工作。
其中一种可能的方法是切换到SessionAuthenticationModule
发布的联合cookie。我已经在博客上介绍了如果使用表单身份验证如何无缝切换到此模块:
http://netpl.blogspot.com/2012/09/forms-authentication-revisited.html
http://netpl.blogspot.com/2012/09/sessionauthenticationmodule-and-dynamic.html