2016-05-16 14 views
2

Wir verwenden Sitecore, um unsere registrierten Benutzer zu verwalten (Extranet-Domain) und wenn wir neue virtuelle Benutzer erstellen, geben wir eine E-Mail mit der Profile.Email-Eigenschaft und rufen dann die Profile.Save()-Methode auf. Eine andere Eigenschaft woanders liest die userProfile.Email, alles ist am Anfang in Ordnung. Außerdem verwenden wir die Formularauthentifizierung mit der Erinnerungsfunktion. Das Problem ist, wenn wir den Browser schließen und es wieder öffnen Sitecore.Context.User enthält Informationen über den tatsächlichen Benutzer, der geklickt hat mich erinnern, aber die User.Profile hat immer die E-Mail null. Ich versuchte Reload() und initialize() sie funktionieren nicht. Ich versuchte auch, den Benutzer wieder über den Benutzernamen zu erhalten (User.FromName()), aber das zurückgegebene Benutzerobjekt hat auch nicht die Profil-E-Mail.Verwenden von SitecoreUser.Profile mit Formularauthentifizierung

Was wird falsch gemacht?

Antwort

2

Es gibt eine sehr wichtige Bemerkung in Security API Cookbook. Es bezieht sich auf Sitecore 6, aber soweit ich weiß, sollte es mit Sitecore 8 funktionieren, da es im Sicherheitsmodell keine wichtigen Änderungen gab. Es funktionierte für Sitecore 7.

Wichtige Sie in einem virtuellen Benutzer anmelden müssen, erst nachdem Sie zuweisen Rollen und Profil Eigenschaften zu ihnen. Die Rollen und Profile Eigenschaften, die nach dem Anmelden zugewiesen werden, gehen bei einer späteren Anfrage verloren.

Sitecore.Security.Accounts.User user = 
Sitecore.Security.Authentication.AuthenticationManager.BuildVirtualUser(@"domain\user" 
, true); 
if (user != null) 
{ 
string domainRole = @"domain\role"; 
if (Sitecore.Security.Accounts.Role.Exists(domainRole)) 
{ 
user.Roles.Add(Role.FromName(domainRole)); 
} 

user.Profile.Email = "[email protected]"; 
user.Profile[“Custom Property”] = “Custom Value”; 
user.Profile.Save(); 
Sitecore.Security.Authentication.AuthenticationManager.LoginVirtualUser(user); 
} 
+0

Ich schätze Ihre ausgezeichnete Antwort, aber die Profildaten auf nachfolgende Anfragen erhalten nicht verloren (wir Erfolg verwenden = AuthenticationManager.Login (sitecoreVirtualUser.Name, bestehen)) nach Profile.Email ausfüllen und speichern. Die Daten gehen erst nach dem Start einer neuen Sitzung nach dem Schließen des Browsers verloren, wenn Sitecore- und ASP.NET-Authentifizierung versuchen, eine neue Sitzung aus dem ASPXAUTH-Cookie zu erstellen. Aber dann wird die E-Mail nicht ausgefüllt. Ich hoffe, das ist klar. – TamerM

+0

@TamerM Verwenden Sie einen benutzerdefinierten Profilanbieter? – Anton

+0

Ich glaube nicht. Ich bin nicht derjenige, der dies ursprünglich implementiert hat. Wie kann ich sicherstellen? – TamerM

Verwandte Themen