2016-04-22 19 views
4

特定のユーザーの役割が特定の操作を実行したときに変更できるカスタムロールプロバイダーがあります。Sitecore - プログラムでユーザーのキャッシュをクリアする

これは、問題のカップルを引き起こしている:役割は彼らに ページへのアクセスを可能にするユーザーに追加された場合、私はサイトコアのキャッシュをクリアするまで

  1. 、これは有効になりません。 を手動で使用する/sitecore/admin/cache.aspx

  2. ユーザーがメニューバーをキャッシュしています。しかし、アクセス許可 が変更されると、新しいアイテムが追加/削除される可能性がありますが、これはキャッシュされたバージョンからのものであるため反映されません。

特定のユーザーのサイトキャッシュをプログラムで消去する方法はありますか?

答えて

5

はい - Sitecoreが行う方法は、レンダリングのキャッシュキーにユーザーの詳細を追加することです。これはhtmlキャッシュに保存されるので、消去するには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); 

を。別のユーザーに対してクリアする場合は、クリアする特定のユーザーを取得するようにContext.GetUserName()を変更してください。

+2

これは、Sitecore ninja fuの一部です。 –

関連する問題