【问题标题】:How do i authenticate once the user create a new Account by Membership & Roles in Asp.Net一旦用户在 Asp.Net 中通过成员资格和角色创建新帐户,我如何进行身份验证
【发布时间】:2012-05-10 14:50:58
【问题描述】:

我在 Asp.Net Membership 中创建了一个自定义 CreateUser。现在我想要的是在创建用户时它应该被重定向为 default.aspx 页面上的登录用户。我如何验证并重定向到默认页面。我不希望他再次登录,但是当用户成功创建后,它应该会自动登录并转到默认页面。

这是我的代码。

public string AddUser(string UserName, string FirstName, string LastName, string Gender, string EmailID, string Password, string Mobile, string SecurityQuestion, string SecurityAnswer)
    {
        MembershipCreateStatus CreateStatus;

        MembershipUser newUser = Membership.CreateUser(UserName, Password, EmailID, SecurityQuestion, SecurityAnswer, true, out CreateStatus);

        if (CreateStatus == MembershipCreateStatus.Success)
        {

            Guid newUserId = (Guid)newUser.ProviderUserKey;

            if (RegisterCustomFields(newUserId, FirstName, LastName, Gender, Mobile) != 0)
            {
                Roles.AddUserToRole(newUser.UserName, "User");
                ReturnMsg = "Successfully Created ";
            }
            else
            {
                Membership.DeleteUser(newUser.UserName);
                ReturnMsg = "Error Creating User";
            }

        }
        else
        {

            switch (CreateStatus)
            {
                case MembershipCreateStatus.DuplicateUserName:
                    ReturnMsg = "There already exists a user with this username.";
                    break;

                case MembershipCreateStatus.DuplicateEmail:
                    ReturnMsg = "There already exists a user with this email address.";
                    break;
                case MembershipCreateStatus.InvalidEmail:
                    ReturnMsg = "There email address you provided in invalid.";
                    break;
                case MembershipCreateStatus.InvalidAnswer:
                    ReturnMsg = "There security answer was invalid.";
                    break;
                case MembershipCreateStatus.InvalidPassword:
                    ReturnMsg = "The password you provided is invalid. It must be seven characters long and have at least one non-alphanumeric character.";
                    break;
                default:
                    ReturnMsg = "There was an unknown error; the user account was NOT created.";
                    break;
            }


        }

        return ReturnMsg;

    }

【问题讨论】:

    标签: c# asp.net asp.net-membership


    【解决方案1】:

    如果你使用 FormsAuthentication :

    FormsAuthentication.SetAuthCookie(userName, isPrsistent);
    

    如果你使用 Asp.Net MVC 那么:

    return RedirectToAction("Index", "Home");
    

    对于 WebForms,请参阅 user1237131 答案

    【讨论】:

      【解决方案2】:

      注册成功后,编写以下代码。 server.Transfer("~/Default.aspx");

      对于身份验证: 不确定您是否想知道他们是“注册”用户还是已登录(如登录状态所示)

      这里是为了知道他们是否登录(登录状态使用什么):

      System.Web.HttpContext.Current.User.Identity.IsAuthenticated;

      试试这个:

      protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
              {
                  if(Membership.ValidateUser(Login1.UserName, Login1.Password))
                  {
                      Response.Redirect("default.aspx");
                      // Set the user as logged in?
                  }
      
              }
      

      【讨论】:

      • 它会重定向,但身份验证呢?它不会验证 .. 在登录状态下它仍然会显示 Welcome Guest,
      【解决方案3】:

      由于您已经注册了用户,但成功注册后没有验证登录用户不会自动登录

      因此,当您发现用户已成功注册到应用程序并注册后,他会被添加到特定角色。然后您可以使用以下代码验证用户。

       if (Membership.ValidateUser(UserName, password.Text))
            {
            string[] role = Roles.GetRolesForUser(username.Text);
            string userrole = role[0].ToString();
      
            FormsAuthentication.SetAuthCookie(UserName, true);
            // Above line will create a Cookie on Browser and you can use this to check the authentication of the user. 
            if (userrole == "User")
                {
                    Response.Redirect("~/Default.aspx", true);
                }
            else
                {
                    Response.Redirect("~/UnAuthorizedPage.aspx", true);
                }
       }
      

      希望对你有帮助:)

      【讨论】:

        猜你喜欢
        • 2016-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多