在C#Runtime MemoryCache中存储用户特定数据是否可以接受?

时间:2015-01-24 21:30:56

标签: c# asp.net-mvc security caching

在我的asp.net MVC应用程序中,每个页面都包含很多很少变化的数据,但仍然是用户特定的,不应该在其他用户之间共享。

我找不到一个处理每个用户缓存的服务器端解决方案,所以我的想法是只使用'标准'内存缓存并使用用户ID作为密钥的一部分。

这可以接受吗? 我是否遗漏了一些安全隐患?

由于

编辑:(已添加详细信息)

这是最初存储在数据库中的数据,例如,我有一个定制的下拉列表(使用AJAX检索并返回jsonresult)用于产品类别。我希望能够手动清除缓存,以防用户通过设置添加类别,我需要检索“新”类别列表。据我所知,我无法使用 OutputCache 手动清除缓存。我还有一个场景,我想每分钟刷新一些缓存项目(对于用户屏幕上的一些更新)。

1 个答案:

答案 0 :(得分:0)

使用OutputCache注释您的操作,并确保该操作仅适用于授权访问。

[Authorized, OutputCache(VaryByCustom = "USER")]
public ActionResult SlowAction() { }

然后在Global.asax.cs中覆盖' VaryByCustom'处理

public override string GetVaryByCustomString(HttpContext context, string custom)
{
    switch (custom)
    {
        case "USER":
            return context.User.Identity.Name;
        default:
            return null;
    }
}