我们有一个ASP.NET MVC应用程序,我们已经开发了自己的自定义RoleProvider类.如果没有缓存,它将为每个请求访问数据存储区 – 不好.我们可以找到唯一的缓存选项(在web.config中)通过存储在客户端机器上的cookie.我的两个问题是:
>这是安全的(即使启用加密)?
> cookie信息是否会随着每个Web请求一起传输 – 因此,每次访问数据存储区可能会减慢应用程序的速度?
有没有人有替代路线?我明白在Session中缓存这些信息也不好?
解决方法
如果您已经开发了自己的自定义RoleProvider类,则可以进行自己的数据缓存,例如:使用ASP.NET缓存.这比使用Session作为缓存更灵活,因为它甚至可以在没有启用会话状态的页面上工作.
我不同意Wyatt Barnett的评论:
The downside for using the Session
… the fact that Session storage is
very violate and not particularly
reliable
缓存(无论是Session,ASP.NET Cache还是其他东西)都是易变的 – 您只需要在需要时重新填充它.
回答你的问题:
>它与用于加密cookie的加密一样安全.如果您依赖FormsAuthentication,则它的安全性必须不低于Forms身份验证票证.> cookie将随每个请求一起传输.因此,如果用户可以拥有大量角色,并且有可能超过浏览器支持的最大cookie大小,则可能会出现性能损失.