}
And this works fine and everything is being loaded in the member groups in umbraco back office.
But when I try to implement the MembershipProvider where i feel things is not working. the web config look something like this
And the Membershiprovider class look like this
class RCSEdMembershipProvide : MembershipProvider
{
string connectionStringName;
private string _ApplicationName = "UmbracoMembershipProvider";
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
{
base.Initialize(name, config);
/* if (config["ConnectionStringName"] != null)
connectionStringName = config["connectionStringName"];*/
}
public override string ApplicationName
{
get { return _ApplicationName; }
set
{
if (string.IsNullOrEmpty(value))
throw new ProviderException("ApplicationName Cacnnot be Empty");
if (value.Length > 0x100)
throw new ProviderException("provider application name too long");
_ApplicationName = value;
}
}
public override bool ChangePassword(string username, string oldPassword, string newPassword)
{
throw new NotImplementedException();
}
public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer)
{
throw new NotImplementedException();
}
public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
throw new NotImplementedException();
}
public override bool DeleteUser(string username, bool deleteAllRelatedData)
{
throw new NotImplementedException();
}
public override bool EnablePasswordReset
{
get { throw new NotImplementedException(); }
}
public override bool EnablePasswordRetrieval
{
get { throw new NotImplementedException(); }
}
public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
{
throw new NotImplementedException();
}
public override MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
{
throw new NotImplementedException();
}
public override MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords)
{
throw new NotImplementedException();
}
public override int GetNumberOfUsersOnline()
{
throw new NotImplementedException();
}
public override string GetPassword(string username, string answer)
{
throw new NotImplementedException();
}
public override MembershipUser GetUser(string username, bool userIsOnline)
{
try
{
User user = (User)HttpContext.Current.Session["user"];
if (user != null)
return new MembershipUser("RCSEdMembershipProvider", user.DisplayName, username, user.Email, "", "", true, false, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now);
else
return null;
}
catch
{
return null;
}
}
public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
{
try
{
User user = (User)HttpContext.Current.Session["user"];
if (user != null)
return new MembershipUser("RCSEdMembershipProvider", user.DisplayName, providerUserKey, user.Email, "", "", true, false, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now);
else
return null;
}
catch
{
return null;
}
}
public override string GetUserNameByEmail(string email)
{
throw new NotImplementedException();
}
public override int MaxInvalidPasswordAttempts
{
get { throw new NotImplementedException(); }
}
public override int MinRequiredNonAlphanumericCharacters
{
get { throw new NotImplementedException(); }
}
public override int MinRequiredPasswordLength
{
get { throw new NotImplementedException(); }
}
public override int PasswordAttemptWindow
{
get { throw new NotImplementedException(); }
}
public override MembershipPasswordFormat PasswordFormat
{
get { throw new NotImplementedException(); }
}
public override string PasswordStrengthRegularExpression
{
get { throw new NotImplementedException(); }
}
public override bool RequiresQuestionAndAnswer
{
get { throw new NotImplementedException(); }
}
public override bool RequiresUniqueEmail
{
get { throw new NotImplementedException(); }
}
public override string ResetPassword(string username, string answer)
{
throw new NotImplementedException();
}
public override bool UnlockUser(string userName)
{
throw new NotImplementedException();
}
public override void UpdateUser(MembershipUser user)
{
throw new NotImplementedException();
}
public override bool ValidateUser(string username, string password)
{
return true;
}
}
I even put the validateUser as true all the time.
so when the User log in to my identity server I load the User role in HttpContext.Current.Session["userRoles"] and I limit the public access of my page and redirect the user to the correct pages.
when the user is not logged the user is redirected to the login page which is fine but when the user is returned and his/her roles is loaded and try to visit the restricted pages the membership provider ValidateUser don't get hit and the User is redirected back to the log in page again and again.
PS. I am using umbraco 7.1.3
Excuse the long question but i wanted to cover all my steps. thank you in advance.
Did you ever get an answer to this because I'm having the same problem in Umbraco 7.2.6 - it never seems to call the custom role provider when checking access to the page.
Umbraco 7 Custom Membership and Role Providers.
I went through 10's of documentation and I am doing the right thing but I am sure it is a small detail I am missing.
I want to use my own login mechanism to log in my website. the login mechanism is in an Identity server for single sign on.
But I want to use the Public access feature in umbraco, so I am adding the roles from my local database. by changing the config file
and implement the RoleProvider
}
} And this works fine and everything is being loaded in the member groups in umbraco back office.
But when I try to implement the MembershipProvider where i feel things is not working. the web config look something like this
And the Membershiprovider class look like this
} I even put the validateUser as true all the time.
so when the User log in to my identity server I load the User role in HttpContext.Current.Session["userRoles"] and I limit the public access of my page and redirect the user to the correct pages.
when the user is not logged the user is redirected to the login page which is fine but when the user is returned and his/her roles is loaded and try to visit the restricted pages the membership provider ValidateUser don't get hit and the User is redirected back to the log in page again and again.
PS. I am using umbraco 7.1.3
Excuse the long question but i wanted to cover all my steps. thank you in advance.
Did you ever get an answer to this because I'm having the same problem in Umbraco 7.2.6 - it never seems to call the custom role provider when checking access to the page.
is working on a reply...