ASP.NET MVC中的角色缓存策略

Chr*_*old 8 asp.net asp.net-mvc caching roles roleprovider

我们有一个ASP.NET MVC应用程序,我们已经开发了自己的自定义RoleProvider类.没有缓存,它将访问每个请求的数据存储 - 不好.我们可以找到唯一的缓存选项(在web.config中)通过存储在客户端机器上的cookie.我的两个问题是:

  1. 这是安全的(即使启用加密)?
  2. Cookie信息是否会随每个Web请求一起传输 - 因此,每次访问数据存储区可能会减慢应用程序的速度?

有没有人有替代路线?我明白在Session中缓存这些信息也不好?

Joe*_*Joe 6

如果您已经开发了自己的自定义RoleProvider类,则可以执行自己的数据缓存,例如使用ASP.NET缓存.这比使用Session作为缓存更灵活,因为它甚至可以在没有启用会话状态的页面上工作.

我不同意Wyatt Barnett的评论:

使用会话的缺点......会话存储非常违反并且不是特别可靠

缓存(无论是Session,ASP.NET Cache还是其他东西)都是易变的 - 您只需要在需要时重新填充它.

回答你的问题:

  1. 它与用于加密cookie的加密一样安全.如果您依赖FormsAuthentication,则它的安全性必须不低于Forms身份验证票证.

  2. cookie将随每个请求一起传输.因此,如果用户可以拥有大量角色,并且有可能超过浏览器支持的最大cookie大小,则可能会出现性能损失.