Backports fixes for legacy encoding checks and to not do any db lookups for the new membership providers and also ensures the legacy membership provider doesn't do any db lookups on init.

This commit is contained in:
Shannon
2014-03-14 18:38:57 +11:00
parent e1a134f587
commit b5329ace3b
5 changed files with 156 additions and 72 deletions

View File

@@ -40,6 +40,8 @@ namespace Umbraco.Web.Security.Providers
}
private string _defaultMemberTypeAlias = "Member";
private volatile bool _hasDefaultMember = false;
private static readonly object Locker = new object();
public override string ProviderName
{
@@ -77,20 +79,35 @@ namespace Umbraco.Web.Security.Providers
if (config["defaultMemberTypeAlias"] != null)
{
_defaultMemberTypeAlias = config["defaultMemberTypeAlias"];
}
else
{
_defaultMemberTypeAlias = MemberService.GetDefaultMemberType();
if (_defaultMemberTypeAlias.IsNullOrWhiteSpace())
{
throw new ProviderException("No default MemberType alias is specified in the web.config string. Please add a 'defaultMemberTypeAlias' to the add element in the provider declaration in web.config");
throw new ProviderException("No default user type alias is specified in the web.config string. Please add a 'defaultUserTypeAlias' to the add element in the provider declaration in web.config");
}
_hasDefaultMember = true;
}
}
public override string DefaultMemberTypeAlias
{
get { return _defaultMemberTypeAlias; }
get
{
if (_hasDefaultMember == false)
{
lock (Locker)
{
if (_hasDefaultMember == false)
{
_defaultMemberTypeAlias = MemberService.GetDefaultMemberType();
if (_defaultMemberTypeAlias.IsNullOrWhiteSpace())
{
throw new ProviderException("No default user type alias is specified in the web.config string. Please add a 'defaultUserTypeAlias' to the add element in the provider declaration in web.config");
}
_hasDefaultMember = true;
}
}
}
return _defaultMemberTypeAlias;
}
}
}
}

View File

@@ -15,20 +15,22 @@ namespace Umbraco.Web.Security.Providers
/// </summary>
public class UsersMembershipProvider : UmbracoMembershipProvider<IMembershipUserService, IUser>, IUsersMembershipProvider
{
public UsersMembershipProvider()
: this(ApplicationContext.Current.Services.UserService)
{
{
}
public UsersMembershipProvider(IMembershipMemberService<IUser> memberService)
: base(memberService)
{
{
}
private string _defaultMemberTypeAlias = "writer";
private volatile bool _hasDefaultMember = false;
private static readonly object Locker = new object();
public override string ProviderName
public override string ProviderName
{
get { return Constants.Conventions.User.UmbracoUsersProviderName; }
}
@@ -44,7 +46,7 @@ namespace Umbraco.Web.Security.Providers
protected override MembershipUser ConvertToMembershipUser(IUser entity)
{
//the provider user key is always the int id
return entity.AsConcreteMembershipUser(Name);
return entity.AsConcreteMembershipUser(Name);
}
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
@@ -55,20 +57,35 @@ namespace Umbraco.Web.Security.Providers
if (config["defaultUserTypeAlias"] != null)
{
_defaultMemberTypeAlias = config["defaultUserTypeAlias"];
}
else
{
var defaultFromService = MemberService.GetDefaultMemberType();
if (defaultFromService.IsNullOrWhiteSpace())
if (_defaultMemberTypeAlias.IsNullOrWhiteSpace())
{
throw new ProviderException("No default user type alias is specified in the web.config string. Please add a 'defaultUserTypeAlias' to the add element in the provider declaration in web.config");
}
}
}
_hasDefaultMember = true;
}
}
public override string DefaultMemberTypeAlias
{
get { return _defaultMemberTypeAlias; }
get
{
if (_hasDefaultMember == false)
{
lock (Locker)
{
if (_hasDefaultMember == false)
{
_defaultMemberTypeAlias = MemberService.GetDefaultMemberType();
if (_defaultMemberTypeAlias.IsNullOrWhiteSpace())
{
throw new ProviderException("No default user type alias is specified in the web.config string. Please add a 'defaultUserTypeAlias' to the add element in the provider declaration in web.config");
}
_hasDefaultMember = true;
}
}
}
return _defaultMemberTypeAlias;
}
}
}
}