我 不 谈论asp.net会员资格。
对于每个记录的用户,我想从db中缓存一些属性,如状态或朋友请求的数量。
我可以创建自定义类,但我认为扩展现有的User.Identity属性会更好。
像这样:
Label1.Text = User.Identity.Status;
有可能吗?
答案 0 :(得分:5)
可以通过定义您自己的IIdentity
(也可能是IPrincipal
)并在为HTTP请求创建IPrincipal
时构建它。我相信正确的地方是PostAuthenticateRequest
事件被提出。
关于这个其他stackoverflow问题的答案解释了如何做到这一点 - ASP.NET set custom identity or principal(它表示对于MVC但都经历了相同的处理管道)。
答案 1 :(得分:3)
根据您的示例,我相信您应该缓存会话数据中的状态和好友请求数等内容。
使用Identity进行此缓存的可能缺点是,如果我没有弄错,每个请求都会导致创建一个新的Identity实例。因此,对于每个请求,您需要从某个位置重新填充这些标识值,无论是数据库还是已经缓存数据的某个位置。