From c32cae16dbaaaaea5631f3a3f55db2b88e168df1 Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 24 Apr 2014 12:14:06 +1000 Subject: [PATCH] Fixes: U4-4696 Macro personalized cache with custom membership provider not working - for any membership provider regardless of provider user key type --- .../Security/MembershipProviderExtensions.cs | 6 ++++-- src/Umbraco.Web/umbraco.presentation/macro.cs | 13 +++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Core/Security/MembershipProviderExtensions.cs b/src/Umbraco.Core/Security/MembershipProviderExtensions.cs index 3e8fa1a568..68505e5669 100644 --- a/src/Umbraco.Core/Security/MembershipProviderExtensions.cs +++ b/src/Umbraco.Core/Security/MembershipProviderExtensions.cs @@ -65,7 +65,9 @@ namespace Umbraco.Core.Security public static MembershipUser GetCurrentUser(this MembershipProvider membershipProvider) { var username = membershipProvider.GetCurrentUserName(); - return membershipProvider.GetUser(username, true); + return username.IsNullOrWhiteSpace() + ? null + : membershipProvider.GetUser(username, true); } /// @@ -78,7 +80,7 @@ namespace Umbraco.Core.Security if (HostingEnvironment.IsHosted) { HttpContext current = HttpContext.Current; - if (current != null) + if (current != null && current.User != null && current.User.Identity != null) return current.User.Identity.Name; } IPrincipal currentPrincipal = Thread.CurrentPrincipal; diff --git a/src/Umbraco.Web/umbraco.presentation/macro.cs b/src/Umbraco.Web/umbraco.presentation/macro.cs index 8e4e52e1dc..cacf2a13e3 100644 --- a/src/Umbraco.Web/umbraco.presentation/macro.cs +++ b/src/Umbraco.Web/umbraco.presentation/macro.cs @@ -228,8 +228,17 @@ namespace umbraco if (CacheByPersonalization) { - int currentMember = Member.CurrentMemberId(); - id.AppendFormat("m{0}-", currentMember); + object memberId = 0; + if (HttpContext.Current.User.Identity.IsAuthenticated) + { + var provider = Umbraco.Core.Security.MembershipProviderExtensions.GetMembersMembershipProvider(); + var member = Umbraco.Core.Security.MembershipProviderExtensions.GetCurrentUser(provider); + if (member != null) + { + memberId = member.ProviderUserKey ?? 0; + } + } + id.AppendFormat("m{0}-", memberId); } foreach (var prop in model.Properties)