Sitecore - 以编程方式清除用户缓存

4
我有一个自定义角色提供程序,其中特定用户的角色可以在他们执行某些操作时更改。
这会导致一些问题:
1.如果向用户添加了一个角色,使其能够访问页面,则必须手动清除Sitecore缓存(使用/sitecore/admin/cache.aspx),才能使更改生效。
2.我们正在按用户缓存一个菜单栏渲染。但是当权限更改时,可能会添加新项目/删除项目,但因为它来自缓存版本,所以这不会反映出来。
有没有办法以编程方式清除特定用户的Sitecore缓存?
1个回答

5
是的 - Sitecore 的做法是通过将用户详细信息添加到呈现的缓存键中来实现。这存储在html缓存中,因此要清除它,您需要获取html缓存并清除所有包含用户名的条目。
以下代码片段可以完成此操作:
// Need to clear the cache for the header and the user profile....
var htmlCache = CacheManager.GetHtmlCache(Context.Site);

// Remove all cache keys that contain the currently logged in user.
var cacheKey = $"#login:True_#user:{Context.GetUserName()}";
htmlCache.RemoveKeysContaining(cacheKey);

这将清除当前登录用户在HTML缓存中的所有条目。如果您想要清除其他用户的缓存,请更改Context.GetUserName()以获取您想要清除的特定用户。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接