ASP.NET Membership Issues With Registration

丶灬走出姿态 提交于 2019-12-20 05:47:34

问题


I'm having a rough time with this membership stuff.

OK, so, it's really odd. I can register a user. I can register, I can login. However, when I go to register ANOTHER user the user isn't saved in the database and I get a Membership credential verification failed event when the user tries to login (I assume because the user is never being saved).

Here is the code I am using to save a new user.

On the page:

protected void btnRegister_Click(object sender, EventArgs e)
    {
        if (false == ValidatePage()) return;
        FormsAuthentication.SignOut();
        MembershipCreateStatus status;
        Data.User user = UserManager.CreateUser(txtEmail.Text.Trim(), txtPassword.Text.Trim(), out status);

        switch (status)
        {
            case MembershipCreateStatus.Success:
                UserManager.Save(user);
                break;
            default:
                lblMessage.Text = status.ToString();
                break;
        }

        Response.Redirect("~/login.aspx");
    }

the CreateUser method:

public static User CreateUser(string username, string password, out MembershipCreateStatus status)
    {
        using (TransactionScope transaction = new TransactionScope())
        {
            MembershipUser aspnetUser = Membership.CreateUser(username, password, username, null, null, true, out status);

            User hqUser = null;

            if (status == MembershipCreateStatus.Success)
            {
                hqUser = new User();

                //these properties are only for issues
                //that won't blow up.  They can be safely removed from the system.
                //the aspnet membership tables take care of this stuff for us.
                hqUser.LastLoginDate = DateTime.Now;
                hqUser.DateCreated = DateTime.Now;
                //end properites.

                hqUser.Email = username;
                hqUser.MembershipID = (Guid)aspnetUser.ProviderUserKey;
                Save(hqUser);
            }

            transaction.Complete();
            return hqUser;

}}

The extra save method is for saving the user in the app's database. The user is not getting into the membership database though so I know it's dying before that.

anyone see anything obvious that's burning me? Thanks!


回答1:


Have you checked to see this is not a problem with password complexity? I know I have had issues with this in the past...




回答2:


You redirect the page before you are able to see the output if the status is not equal to success.

Btw. it might be better to inherit the sqlmembership provider and extend it with your own extra db inserts, at least if you are not inserting extra data. Or are you asking more than the default stuff on the first creation of the account?

Try it like this code and see what the value of the enum is in the lblMessage

protected void btnRegister_Click(object sender, EventArgs e) {

      if (!ValidatePage()) return;

        FormsAuthentication.SignOut();
            MembershipCreateStatus status;
            Data.User user = UserManager.CreateUser(txtEmail.Text.Trim(), txtPassword.Text.Trim(), out status);
            switch (status) { 
        case MembershipCreateStatus.Success:
                            UserManager.Save(user);
            Response.Redirect("~/login.aspx");
                            break;
                    default:
                            lblMessage.Text = status.ToString();
                            break;
            }       

    }

grrgr, stupid markup thing

Hope this helps.




回答3:


My first guess is that ValidatePage() return false.



来源:https://stackoverflow.com/questions/481416/asp-net-membership-issues-with-registration

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!