我正在制作自己的基本控制器,因为我想向主页面传递一些数据。由于这就像在该控制器的每个视图中添加此代码,所以它每次都会运行。
第一次加载时,我认为它至少已经命中了我的代码两次。所以我考虑缓存它。但是在我的书中,它说不要缓存私有数据,因为每个人都会看到它。
所以我不确定该怎么办。
我的几行代码所做的是:
1.查找用户名并向用户显示它。 2.查找用户计划并显示它。
所以我需要userName来查找他们的GUID,以便我可以找出他们注册的计划。
所以我不知道如何缓存它,但不向所有人公开它。是否有方法使其仅为此用户缓存?
引用Asp.net mvc framework unleasehd pg 330
不要缓存私有数据 缓存包含私有用户数据的页面非常危险。当页面在服务器上缓存时,相同的页面将提供给所有用户。因此,如果您缓存显示用户信用卡号的页面,则每个人都可以看到信用卡号(不好!)。
即使您要求授权,也会为所有用户缓存相同的页面。例如,假设您创建了一个金融服务网站,该网站包括显示用户所有投资的页面。该页面显示用户投资一组股票、债券和共同基金的金额。
由于此信息是私有的,因此您需要在查看页面之前要求用户登录。换句话说,每个用户必须经过授权才能查看页面。
为了提高金融服务页面的性能,您决定为该页面启用缓存。您将OutputCache属性添加到返回页面的控制器操作中。
不要这样做!如果您缓存返回金融服务页面的控制器操作,则第一个请求页面的人的私有财务数据将在随后的访问者中共享应用程序。
通常,将OutputCache和Authorize属性添加到同一控制器操作会打开安全漏洞。避免这样做:
第一次加载时,我认为它至少已经命中了我的代码两次。所以我考虑缓存它。但是在我的书中,它说不要缓存私有数据,因为每个人都会看到它。
所以我不确定该怎么办。
我的几行代码所做的是:
1.查找用户名并向用户显示它。 2.查找用户计划并显示它。
所以我需要userName来查找他们的GUID,以便我可以找出他们注册的计划。
所以我不知道如何缓存它,但不向所有人公开它。是否有方法使其仅为此用户缓存?
引用Asp.net mvc framework unleasehd pg 330
不要缓存私有数据 缓存包含私有用户数据的页面非常危险。当页面在服务器上缓存时,相同的页面将提供给所有用户。因此,如果您缓存显示用户信用卡号的页面,则每个人都可以看到信用卡号(不好!)。
即使您要求授权,也会为所有用户缓存相同的页面。例如,假设您创建了一个金融服务网站,该网站包括显示用户所有投资的页面。该页面显示用户投资一组股票、债券和共同基金的金额。
由于此信息是私有的,因此您需要在查看页面之前要求用户登录。换句话说,每个用户必须经过授权才能查看页面。
为了提高金融服务页面的性能,您决定为该页面启用缓存。您将OutputCache属性添加到返回页面的控制器操作中。
不要这样做!如果您缓存返回金融服务页面的控制器操作,则第一个请求页面的人的私有财务数据将在随后的访问者中共享应用程序。
通常,将OutputCache和Authorize属性添加到同一控制器操作会打开安全漏洞。避免这样做: