2016-05-10 11 views
7

Mamy wiele witryn wyłączonych z jednego wystąpienia witryny sitecore. Jedna z tych witryn wymaga zarządzania rolami użytkowników za pośrednictwem zewnętrznego systemu zaplecza. W związku z tym skonfigurowaliśmy niestandardowe członkostwo w zakresie członkostwa & wraz z domenami dla każdej witryny. Jednak z jakiegoś powodu przełącznik dostawcy roli nie wydaje się być przestrzegany. Jeśli loguję się do systemu CMS jako użytkownik sitecore, nadal wywołuje mojego dostawcę roli niestandardowej, aby spróbować uzyskać role dla tego użytkownika, mimo że dostawca roli jest skonfigurowany względem innej domeny?Sitecore - dostawca przełączający dla dostawcy ról, który nie przestrzega domeny

Dostawca rola działa dobrze, gdy faktyczne użytkownicy logują się na stronie, ale to nie powinno być uderzenie, gdy użytkownicy CMS edytowania stron itd

Config w naszej Web.config:

<roleManager defaultProvider="sitecore" enabled="true" cookieRequireSSL="false" createPersistentCookie="false" cookieSlidingExpiration="true" cacheRolesInCookie="false"> 
    <providers> 
    <clear /> 
    <add name="sitecore" type="Sitecore.Security.SitecoreRoleProvider, Sitecore.Kernel" realProviderName="switcher" raiseEvents="true" /> 
    <add name="sql" type="System.Web.Security.SqlRoleProvider" connectionStringName="core" applicationName="sitecore" /> 
    <add name="MyProvider" type="MyApp.Web.Infrastructure.Security.RoleProviders.MyProvider, MyApp.Web" applicationName="sitecore" /> 
    <add name="switcher" type="Sitecore.Security.SwitchingRoleProvider, Sitecore.Kernel" applicationName="sitecore" mappings="switchingProviders/roleManager" /> 
    </providers> 
</roleManager> 

Plus nasza poprawionych w Sitecore config:

<switchingProviders> 
    <roleManager> 
    <provider providerName="MyProvider" storeFullNames="false" wildcard="%" domains="mydomain" patch:after="provider[@providerName='sql']"/> 
    </roleManager> 
</switchingProviders> 

Odpowiedz

8

To wydaje się być dziwactwo/bug Sitecore. Podczas korzystania z obiektu SwitchingRoleProvider właściwość domeny jest ignorowana, a zaimplementowany dostawca jest wywoływany we wszystkich domenach.

Istnieją 2 nieudokumentowane właściwości, które są dodawane przy użyciu tego dostawcę Rola:

ignoredUserDomains - oddzielonych przecinkami listę domen, że dostawca nie będą stosowane w celu.

i

allowedUserDomains - oddzielonych przecinkami listę domen, że dostawca tylko być stosowane do.

Można określić tylko jedno z nich dla dostawcy roli, a podanie obu spowoduje zgłoszenie wyjątku.

W przykładzie użyłeś dodaje powinno rozwiązać problem:

<switchingProviders> 
    <roleManager> 
    <provider providerName="MyProvider" storeFullNames="false" wildcard="%" allowedUserDomains="mydomain" patch:after="provider[@providerName='sql']"/> 
    </roleManager> 
</switchingProviders> 

(source)