Potentially fixes U4-5069 Deadlock occurring in MemberService.GetByUsername
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user