[英]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.