Potentially fixes U4-5069 Deadlock occurring in MemberService.GetByUsername

This commit is contained in:
Shannon
2014-07-01 10:43:44 +10:00
parent 59116fc7fa
commit f3c7533796
2 changed files with 21 additions and 3 deletions

View File

@@ -62,7 +62,12 @@ namespace Umbraco.Core.Security
return Membership.Providers[UmbracoConfig.For.UmbracoSettings().Providers.DefaultBackOfficeUserProvider];
}
public static MembershipUser GetCurrentUser(this MembershipProvider membershipProvider)
/// <summary>
/// Returns the currently logged in MembershipUser and flags them as being online - use sparingly (i.e. login)
/// </summary>
/// <param name="membershipProvider"></param>
/// <returns></returns>
public static MembershipUser GetCurrentUserOnline(this MembershipProvider membershipProvider)
{
var username = membershipProvider.GetCurrentUserName();
return username.IsNullOrWhiteSpace()
@@ -70,6 +75,19 @@ namespace Umbraco.Core.Security
: membershipProvider.GetUser(username, true);
}
/// <summary>
/// Returns the currently logged in MembershipUser
/// </summary>
/// <param name="membershipProvider"></param>
/// <returns></returns>
public static MembershipUser GetCurrentUser(this MembershipProvider membershipProvider)
{
var username = membershipProvider.GetCurrentUserName();
return username.IsNullOrWhiteSpace()
? null
: membershipProvider.GetUser(username, false);
}
/// <summary>
/// Just returns the current user's login name (just a wrapper).
/// </summary>

View File

@@ -312,7 +312,7 @@ namespace Umbraco.Web.Security
if (provider.IsUmbracoMembershipProvider())
{
var membershipUser = provider.GetCurrentUser();
var membershipUser = provider.GetCurrentUserOnline();
var member = GetCurrentPersistedMember();
//this shouldn't happen but will if the member is deleted in the back office while the member is trying
// to use the front-end!
@@ -476,7 +476,7 @@ namespace Umbraco.Web.Security
}
else
{
var member = provider.GetCurrentUser();
var member = provider.GetCurrentUserOnline();
//this shouldn't happen but will if the member is deleted in the back office while the member is trying
// to use the front-end!
if (member == null)