简体   繁体   English

一旦用户通过Asp.Net中的成员资格和角色创建新帐户,我该如何进行身份验证

[英]How do i authenticate once the user create a new Account by Membership & Roles in Asp.Net

I have created a custom CreateUser in Asp.Net Membership. 我在Asp.Net Membership中创建了一个自定义CreateUser。 Now what i want is when User is created it should be redirected as a loggedIn user on default.aspx page. 现在我想要的是当创建用户时,它应该被重定向为default.aspx页面上的loggedIn用户。 how can i Authenticate and Redirect to Default page. 我如何验证和重定向到默认页面。 I dont want him to Login Again but when user is created successfully it should automatically logged in and go to Default page. 我不希望他再次登录,但是当用户成功创建时,它应该自动登录并转到默认页面。

Here is my code. 这是我的代码。

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;

    }

After Registration was success write the below code. 注册成功后,请编写以下代码。 server.Transfer("~/Default.aspx"); Server.Transfer的( “〜/ Default.aspx的”);

For Authentication: Not sure if you want to know if they are a "registered" user or have logged in (as the Login status would indicate) 对于身份验证:不确定您是否想知道他们是“已注册”用户还是已登录(如登录状态所示)

Here's to know if they are logged in (what the Login status uses): 这是要知道他们是否已登录(登录状态使用的内容):

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

Try This: 尝试这个:

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?
            }

        }

If you use FormsAuthentication : 如果您使用FormsAuthentication:

FormsAuthentication.SetAuthCookie(userName, isPrsistent);

If you use Asp.Net MVC then: 如果您使用Asp.Net MVC,那么:

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

For WebForms see user1237131 answer 对于WebForms,请参阅user1237131 answer

Since you have registered the user but not Validated it for login after successfully registration user is not logged in automatically 由于您已注册用户但未在成功注册后验证登录,因此用户未自动登录

Therefore after you find that the user has register to the Application successfully and after registration he is added to a specific role. 因此,在您发现用户已成功注册到应用程序后,在注册后,他将被添加到特定角色。 Then you can validate the User with use of the below code. 然后,您可以使用以下代码验证用户。

 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);
          }
 }

Hope it helps you :) 希望它能帮到你:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM