簡體   English   中英

一旦用戶通過Asp.Net中的成員資格和角色創建新帳戶,我該如何進行身份驗證

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

我在Asp.Net Membership中創建了一個自定義CreateUser。 現在我想要的是當創建用戶時,它應該被重定向為default.aspx頁面上的loggedIn用戶。 我如何驗證和重定向到默認頁面。 我不希望他再次登錄,但是當用戶成功創建時,它應該自動登錄並轉到默認頁面。

這是我的代碼。

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;

    }

注冊成功后,請編寫以下代碼。 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?
            }

        }

如果您使用FormsAuthentication:

FormsAuthentication.SetAuthCookie(userName, isPrsistent);

如果您使用Asp.Net MVC,那么:

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

對於WebForms,請參閱user1237131 answer

由於您已注冊用戶但未在成功注冊后驗證登錄,因此用戶未自動登錄

因此,在您發現用戶已成功注冊到應用程序后,在注冊后,他將被添加到特定角色。 然后,您可以使用以下代碼驗證用戶。

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

希望它能幫到你:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM