7

Wir haben mehrere Seiten, die von einer Instanz von Sitecore ausgehen. Für eine der Sites müssen die Benutzer & Rollen über ein externes Back-End-System verwaltet werden. Daher haben wir benutzerdefinierte Rollenanbieter für die Mitgliedschaft & zusammen mit Domänen für jede Site konfiguriert. Aus irgendeinem Grund scheint der Umschalter des Rollenanbieters jedoch nicht respektiert zu werden. Wenn ich mich als Sitecore-Benutzer beim CMS anmelde, wird mein eigener Rollenanbieter dennoch aufgefordert, Rollen für diesen Benutzer zu versuchen, obwohl der Rollenanbieter für eine andere Domäne konfiguriert ist.Sitecore - Wechselanbieter für Rollenanbieter, der die Domain nicht respektiert

Der Rollenanbieter arbeitet gut, wenn der tatsächliche Nutzer in die Website einzuloggen, aber es sollte nicht getroffen werden, dass, wenn CMS-Benutzer bearbeiten Seiten usw.

Config in unserem 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 unsere gepatchten in Sitecores config:

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

Antwort

8

Dies scheint eine Marotte/bug von Sitecores zu sein. Wenn Sie den SwitchingRoleProvider verwenden, wird die Domäneneigenschaft ignoriert und der implementierte Provider wird über alle Domänen hinweg aufgerufen.

Es gibt 2 undokumentierten Eigenschaften, die hinzugefügt werden, wenn diese Rollenanbieter verwenden:

ignoredUserDomains - durch Kommata getrennte Liste von Domains, die der Anbieter nicht angewandt werden.

und

allowedUserDomains - durch Kommata getrennte Liste von Domains, die der Anbieter nur angewendet werden.

Sie können nur eine dieser Optionen für den Rollenanbieter angeben und beide werden eine Ausnahme auslösen.

Im Beispiel Sie verwendet haben, sollte die folgende Ihr Problem beheben:

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

(source)

Verwandte Themen