0

Asp.Net メンバーシップでカスタム 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;

    }
4

3 に答える 3

1

FormsAuthentication を使用する場合:

FormsAuthentication.SetAuthCookie(userName, isPrsistent);

Asp.Net MVC を使用する場合:

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

WebForms については、user1237131 の回答を参照してください

于 2012-05-10T06:29:44.100 に答える
1

登録が成功したら、以下のコードを記述します。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?
            }

        }
于 2012-05-10T06:28:20.597 に答える
0

ユーザーを登録しましたが、登録に成功した後にログイン用に検証していないため、ユーザーは自動的にログインしません

したがって、ユーザーがアプリケーションに正常に登録されたことを確認すると、登録後に特定のロールに追加されます。次に、以下のコードを使用してユーザーを検証できます。

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

それがあなたを助けることを願っています:)

于 2012-05-10T06:39:21.353 に答える