2016-11-02 3 views
2

Security Disaglerを使用してコードを実行している場合、SecurityDisablerの使用中にセキュリティを再度有効にすることは可能ですか?Security Disabler内のSitecoreのアクセス許可

私の問題は、ユーザーのアクセス許可をテストする必要がありますが、SecurityDisablerにいて、UserSwitcherを使用してアクセス許可をテストする必要がある場合です。それは常に彼らに許可があると言います。だから私はテストするためにセキュリティを再び有効にしたいと考えていました。

もう1つは、アイテムがワークボックスに入ったときにコードが実行され、SitecoreがそのコードをDisablerで自動的に実行しているように見えますが、アクセス許可をテストすることが難しいということです。

これはSitecore 6.4.1です。

答えて

2

あなたは例えば、using SecurityDisabler scopeSecurityStateSwitcherを使用することができます。

Item item = Sitecore.Context.Database.GetItem("/sitecore/system"); 

var canAnonymousRead = item.Security.CanWrite(Sitecore.Context.User); // returns false 

using (new SecurityDisabler()) 
{ 
    canAnonymousRead = item.Security.CanWrite(Sitecore.Context.User); // returns true 

    using (new SecurityStateSwitcher(SecurityState.Enabled)) 
    { 
     canAnonymousRead = item.Security.CanWrite(Sitecore.Context.User); // returns false again 
    } 
} 

SecurityStateSwitcherSecurityDisablerの基底クラス(下記参照)であるので、あなたが上記を参照すると、バックEnabledモードにセキュリティチェックを「リセット」するための方法であります。

public class SecurityDisabler : SecurityStateSwitcher 
{ 
    public SecurityDisabler : base (SecurityState.Disabled) {} 
} 
関連する問題