Application_OnPostAuthenticateRequest和自定义主体缓存
本文关键字:主体 缓存 自定义 OnPostAuthenticateRequest Application | 更新日期: 2023-09-27 18:31:50
我已经实现了自定义主体方法,如步骤 5:使用自定义主体中所述
然后,我从数据库中检索用户凭据以用于自定义主体,但这会导致每个请求的数据库调用,因此答案自然是将我的用户对象保存在某个地方,会话或缓存。
但是,似乎无法从内部访问HttpContext.Current.Session
Application_OnPostAuthenticateRequest
,所以缓存似乎是要走的路
问题是这两个答案在这里和这里提供了相互矛盾的建议。 第一个建议
不,不要使用 HttpCurrent.Current.Cache 来存储用户的特定信息,因为缓存对所有用户都是通用的,并且会遇到冲突。请改用 HttpContext.Current.Session 来代替,因为这将特定于用户。
第二个建议
使用缓存而不是会话
那么哪种方法更受欢迎呢?
如果Session
方法是如何将我的用户对象从 Application_OnPostAuthenticateRequest
方法放入 Session 对象中。
如果前进的道路Cache
我将面临什么问题? 例如,缓存中保存的项目是否有时间限制? (我知道通过使用用户对象中的唯一键来解决潜在的冲突)
不确定您是否仍在寻找答案,但存储身份验证信息的最佳位置是在编写票证时在 Ticket.UserData
属性中。
我假设如果您使用的是自定义提供程序,则正在覆盖SetAuthCookie
方法。
如果是这种情况,那么该方法将允许您传入额外的信息以进行存储。存储友好用户名、角色或其他身份验证详细信息等内容是很常见的。
请参阅此链接,了解如何在身份验证 Cookie 中设置用户数据