2016-05-10 24 views
7

Abbiamo più siti in esecuzione su un'istanza di sitecore. Uno dei siti richiede che i ruoli degli utenti & siano gestiti tramite un sistema di back-end esterno e come tali, abbiamo configurato i membri del ruolo di appartenenza personalizzata & insieme ai domini per ciascun sito. Tuttavia, per qualche motivo lo switcher sul provider di ruolo non sembra essere rispettato. Se accedo al CMS come utente Sitecore, continua a chiamare il mio fornitore di ruolo personalizzato per provare a ottenere ruoli per questo utente, nonostante il provider di ruolo sia configurato su un dominio diverso?Sitecore - Provider di commutazione per provider di ruoli che non rispetta il dominio

Il provider di ruoli funziona bene quando gli utenti effettivi accedere al sito, ma non dovrebbe essere essere colpiti quando gli utenti CMS stanno modificando le pagine ecc

Config nel nostro 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> 

Inoltre il nostro patch in Sitecore config:

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

risposta

8

Questo sembra essere un capriccio/bug di Sitecore. Quando si utilizza SwitchingRoleProvider, la proprietà del dominio viene ignorata e il provider implementato viene chiamato su tutti i domini.

Ci sono 2 proprietà non documentati che vengono aggiunti quando si utilizza questo provider di ruoli:

ignoredUserDomains - separati da virgola elenco di domini che il provider non verrà applicato.

e

allowedUserDomains - virgole elenco dei domini che il provider verranno applicate solo a separati.

È possibile specificare solo uno di questi per il provider di ruolo e fornire entrambi genera un'eccezione.

Nell'esempio si è utilizzato, il seguente dovrebbe risolvere il problema:

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

(source)