ASP.NET Role Manager 模块深度解析与多提供者应用实践
1. 角色缓存大小测试与考量
在处理拥有大量角色的用户时,需要测试 ToEncryptedTicket 方法返回值的大小。若返回的字符串长度超过 4096 个字符, RoleManagerModule 将不会颁发角色缓存 cookie,此时可能需要关闭 cookie 缓存。
由于 RolePrincipal 使用二进制序列化,这会给角色缓存 cookie 的大小增加几百个字符的开销。与自定义序列化机制相比,二进制序列化大约会额外增加 350 个字符的开销。这还不包括为了将角色信息编码存储在 cookie 中所带来的额外开销。例如,当用户仅属于三个角色时,加密后的票据长度为 492 个字符,而这三个角色名的总长度仅为 18 个字符。这是因为角色缓存 cookie 不仅存储每个角色名,还存储发行/过期日期、版本号、用户的用户名、提供者名称以及一些内部跟踪信息。
通过对不同数量角色的 cookie 缓存功能进行测试,ASP.NET 团队成功地在一个角色缓存 cookie 中存储了 300 个角色(每个角色名约 7 个字符长),且 cookie 保护设置为 “All”。
2. RoleManagerModule 概述
RoleManagerModule 是一个 HttpModule ,主要负责两项任务:
- 在请求生命周期的早期,如果启用了角色管理功能,它会在 HttpContext.Current.
超级会员免费看
订阅专栏 解锁全文
4

被折叠的 条评论
为什么被折叠?



