【发布时间】:2012-03-24 05:37:55
【问题描述】:
我正在制作自己的基本控制器,因为我想将一些数据传递到母版页。现在,这就像将这段代码添加到该控制器中的每个视图中一样,它每次都会运行。
当它第一次加载时,我认为它至少已经命中了我的代码两次。所以我在考虑缓存它。但是在我的书中它说不要缓存私人数据,因为每个人都会看到它。
所以我不知道该怎么办。
我的几行代码就是这样做的。
- 查找用户名并将其显示给用户。
- 找到用户计划并将其显示出来。
所以我需要用户名来找出他们的 GUID,这样我就可以找出他们注册的计划。
所以我不知道如何缓存它,但不向所有人公开。有没有办法只为这个用户缓存?
引用 Asp.net mvc framework unleasehd pg 330
不要缓存私人数据
缓存包含私有的页面 用户数据非常危险。什么时候 页面缓存在服务器上, 同一页面提供给所有用户。所以, 如果您缓存显示 用户信用卡号,每个人都可以 查看信用卡号(不是 好!)。
为所有用户缓存同一页面 即使您需要授权。 例如,想象一下,您创建 金融服务网站和 网站包含一个页面,显示 所有用户的投资。这页纸 显示金额 用户投资了一组股票, 债券和共同基金。
因为这些信息是私密的, 您要求用户登录之前 看到页面。换句话说,每个 用户必须在授权之前 用户可以查看该页面。
为了提高性能 金融服务页面,您决定 为页面启用缓存。你加 OutputCache 属性 控制器动作返回 页面。
不要那样做!如果你缓存 控制器动作返回 金融服务页面,私人 第一个人的财务数据 请求页面将被共享 随后的每一位访客 应用。
一般来说,添加 OutputCache 和 授权属性相同 控制器动作打开一个安全 洞。避免这样做:
【问题讨论】:
标签: .net asp.net asp.net-mvc