1. 程式人生 > >擺脫Login控件,自己定義登錄操作

擺脫Login控件,自己定義登錄操作

itl span ole move 用戶信息 tty etime control 用戶角色

protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
//在登錄過程中,程序自動使用login.aspx進行攔截
//驗證用戶通過後,自動返回攔截的位置
if (Membership.ValidateUser(this.TextBox1.Text, this.TextBox2.Text))
{
this.Session["xh"] = this.TextBox1.Text;
FormsAuthentication.RedirectFromLoginPage(this.TextBox1.Text, false);


}
}

Membership用法詳解

用戶與角色管理在asp.net2.0中是通過Membership和Roles兩個類來實現的。

Membership:用戶成員賬號管理,用戶名、密碼、郵箱等

Roles:負責用戶和群組之間關系管理。

l Membership類:主要是創建用戶帳號、驗證用戶身份和管理用戶設置

屬性:

1) EnablePasswordReset:獲取一個值,以指示是否可以重置密碼。

2) EnablePasswordRetrieval:獲取一個值,以指示是否允許用戶提取密碼。

3) HashAlgorithmType:獲取一個值,密碼的算法識別項

4) MaxInvalidPasswordAttempts:獲取一個值,鎖定用戶之間所允許的重試次數。

5) MinRequiredNonAlphanumericCharacters:獲取一個值,密碼中最少的特殊字符數。

6) MinRequiredPasswordLength:取得最小密碼的長度

7) RequiresQuestionAndAnswer:獲取一個值,指示是否要求用戶解答密碼
問題以重新提取密碼。

8) UserIsOnlineTimeWindow:指定用戶最後活動日期之後的分鐘數,其間的用戶視為在線。

方法

1) CreateUser():創建新的用戶

2) DeleteUser():從數據庫刪除用戶

3) GetUser():取得成員資格用戶的信息

4) UpdateUser():更新用戶信息

5) ValidateUser():驗證用戶賬號與密碼是否用效

6) GetAllUsers():取得數據庫中用戶的集合

7) FindUsersByEmail():根據email查詢用戶

8) FinndUsersByName():根據帳號名稱查詢用戶

9) GetNumberOfUsersOnline():取得目前訪問程序的在線用戶

10) GetUserNameByEmail():根據郵箱查詢用戶名

l MembershipUser類

負責管理與更新Membership表中的相關資料。別把MembershipUser類與Membership類混了,實際上是同MembershipUser處理完成後交由Membership處理。如:

1) 取得或設置用戶相關信息。如UserName,Email和帳號創建時間。

2) 讀取、改變用戶密碼

3) 改變密碼提示問題與答案

4) 解鎖帳號

5) 設置是否允許用戶能夠被驗證

屬性:

1) CreationDate:取得用戶的創建時間

2) Email:取得或設置用戶的電子郵件地址

3) IsApproved:取得或設置用戶是否可以進行驗證

4) IsLockedOut:取出用戶是否被鎖定

5) IsOnLine:指出用戶目前是否在線

6) LastActivityDate:取得或設置用戶最後一次驗證或訪問程序的日期時間

7) LastLoclkoutDate:取是最近鎖定用戶的日期和時間

8) LastLoginDate:取得或設置用戶上一次驗證的日期時間

9) LastPasswordChangedDate:取得用戶密碼上一次更新的時間

10) PasswordQuestion:取得用戶的
安全密碼的問題

11) UserName:取得用戶登錄的名稱

方法:

12) ChangePassword():更改用戶密碼

13) ChangePasswordQuestionAndAnswer:更改用戶的密碼安全問題和解答

14) GetPassword():取得用戶密碼

15) ResetPassword():將用戶的密碼重置,並自動產生新密碼

16) UnlockUser():解除帳號鎖定,以便能進行身份驗證


l Roles類

方法:

1) AddUsersToRole():將多個用戶加入一個角色

2) AddUsersToRoles():將多個用戶加入多個角色

3) AddUserToRole():將一個用戶加入一個角色

4) AddUserToRoles():將一個用戶加入多個角色

5) CreateRole():創建角色

6) DeleteRole():刪除角色

7) FindUsersInRole():尋找某個角色中的所有用戶

8) GetAllRoles():取得所有角色的清單

9) GetRolesForUser():取得用戶所屬角色的清單

10) IsUserInRole():指出用戶是否在指定的角色中

11) RemoveUserFromRole():從一個角色中移除一個用戶

12) RemoveUserFromRoles():從多個角色中移出一個用戶

13) RemoveUsersFromRole():從一個角色中移除多個用戶

14) RemoveUsersFromRoles():從多個角色中移除多個用戶名

15) RoleExists():用戶角色名是否已存在於角色表中。

代碼實現(1)

創建用戶:

MembershipCreateStatus mc;

Membership.CreateUser(txtUid.Text, txtPwd.Text, txtEmail.Text, txtQuestion.Text, txtAnswer.Text, true, out mc);

Response.Write(mc.ToString());

刪除用戶:

if (Membership.DeleteUser(txtUid.Text))

Response.Write("OK");

else

Response.Write("Error");

修改用戶信息:

if (User.Identity.IsAuthenticated)

{

MembershipUser user = Membership.GetUser();

user.Email = txtEmail.Text;

Membership.UpdateUser(user);

Response.Write(user.Email.ToString());

}

驗證用戶登錄信息

bool isok = Membership.ValidateUser(txtUid.Text, txtPwd.Text);

if (isok)

{

FormsAuthentication.SetAuthCookie(txtUid.Text, false);

Response.Write("OK");

}

else

{

Response.Write("Error");

}

獲取登錄用戶的信息

if (User.Identity.IsAuthenticated)

{

MembershipUser myuser = Membership.GetUser();

if (myuser != null)

{

 Response.Write(myuser.CreationDate);

 Response.Write(myuser.Email);

 Response.Write(myuser.IsLockedOut);

 Response.Write(myuser.IsOnline);

 Response.Write(myuser.PasswordQuestion);

 Response.Write(myuser.UserName);

}

}

根據密碼問題的答案返回用戶密碼

if (User.Identity.IsAuthenticated)

{

MembershipUser user = Membership.GetUser(txtUid.Text);

txtPwd.Text = user.GetPassword(txtAnswer.Text);

}

修改用戶密碼

if (User.Identity.IsAuthenticated)

{

MembershipUser user = Membership.GetUser();

user.ChangePassword(txtPwd.Text,txtPWd2.Text);

Response.Write(user.GetPassword(txtAnswer.Text));

}

解鎖用戶

MembershipUser user = Membership.GetUser(txtUid.Text);

bool b = user.UnlockUser();

Response.Write(b+" "+user.IsLockedOut);

拒絕用戶登錄

MembershipUser user = Membership.GetUser(txtUid.Text);

user.IsApproved = false;

Membership.UpdateUser(user);

Response.Write(user.IsLockedOut);

允許用戶登錄

MembershipUser user = Membership.GetUser(txtUid.Text);

user.IsApproved = true;

Membership.UpdateUser(user);

Response.Write(user.IsLockedOut);

根據用戶名或郵箱來檢索用戶

 MembershipUserCollection users;

 switch(listType.Text)

 {

  case "姓名":

  users = Membership.FindUsersByName(txtFind.Text);

  if (users.Count > 0)

  {

   showUserInfo(users);

  }

  else

  {

   Response.Write("未找到用戶名");

  }

  break;

  case "郵箱":

  users = Membership.FindUsersByEmail(txtFind.Text);

  if (users.Count > 0)

  {

   showUserInfo(users);

  }

  else

  {

   Response.Write("未找到郵箱");

  }

  break;

 }

代碼實現(2)

加載所有用戶

MembershipUserCollection user = Membership.GetAllUsers();

listUser.DataSource = user;

listUser.DataBind();

加載所有角色

string[] role = Roles.GetAllRoles();

listRole.DataSource = role;

listRole.DataBind();

添加新角色

Roles.CreateRole(txtRole.Text);

刪除角色

Roles.DeleteRole(txtRole.Text);

將一個用戶添加到一個角色

Roles.AddUserToRole(listUser.Text, listRole.Text);

將一個用戶從一個角色中移除

Roles.RemoveUserFromRole(listUser.Text, listRole.Text);

將一個用戶加入到多個角色中去

int n = 0;

foreach (ListItem li in listRole.Items)

{

if (li.Selected) n++;

}

string[] roles = new string[n];

int i=0;

foreach(ListItem li in listRole.Items)

{

if(li.Selected)

{

roles[i++] = li.Text;

}

}

Roles.AddUserToRoles(listUser.Text, roles);

將一個用戶的所有角色移除

string[] str = Roles.GetRolesForUser(listUser.Text);

Roles.RemoveUserFromRoles(listUser.Text,str);

將多個用戶加入到一個角色中去

int n = 0;

foreach (ListItem li in listUser.Items)

{

if (li.Selected) n++;

}

string[] users = new string[n];

int i=0;

foreach (ListItem li in listUser.Items)

{

if (li.Selected)

{

users[i++] = li.Text;

}

}

Roles.AddUsersToRole(users,listRole.Text);

將一個角色中的所有的用戶移除

string[] users = Roles.GetUsersInRole(listRole.Text);

Roles.RemoveUsersFromRole(users, listRole.Text);

將多個用戶加入到多個角色

int n = 0;

foreach (ListItem li in listUser.Items)

{

if (li.Selected) n++;

}

string[] strUser = new string[n];

n = 0;

foreach (ListItem li in listRole.Items)

{

if (li.Selected) n++;

}

string[] strRoles = new string[n];

for (int i = 0; i < listUser.Items.Count; i++)

{

strUser[i] = listUser.Items[i].Text;

}

for (int i = 0; i < listRole.Items.Count; i++)

{

strRoles[i] = listRole.Items[i].Text;

}

Roles.AddUsersToRoles(strUser, strRoles);

1.創建用戶...

string userName = txtUsername.Text;
string passWord = txtPassword.Text;
string email = txtEmail.Text;
string passwordQuestion = ddlPasswordQuestion.SelectedValue;
string passwordAnswer = txtPasswordAnswer.Text;
MembershipCreateStatus result;
// 創建一個用戶
Membership.CreateUser(userName, passWord, email, passwordQuestion, passwordAnswer, true, out result);
//顯示創建結果,並做後期處理
lblResults.Visible = true;
switch (result)
{
case MembershipCreateStatus.Success:
txtUsername.Text = "";
txtPassword.Text = "";
txtEmail.Text = "";
ddlPasswordQuestion.SelectedIndex = -1;
txtPasswordAnswer.Text = "";
lblResults.Text = "新用戶創建成功.";
break;
case MembershipCreateStatus.InvalidUserName:
lblResults.Text = "無效的用戶名.";
break;
case MembershipCreateStatus.DuplicateEmail:
lblResults.Text = "重復的電子郵件地址.";
break;
case MembershipCreateStatus.InvalidQuestion:
lblResults.Text = "無效的密碼問題.";
break;
case MembershipCreateStatus.DuplicateUserName:
lblResults.Text = "重復的用戶名.";
break;
case MembershipCreateStatus.InvalidAnswer:
lblResults.Text = "無效的密碼答案";
break;
case MembershipCreateStatus.InvalidEmail:
lblResults.Text = "無效的電子郵件地址";
break;
case MembershipCreateStatus.InvalidPassword:
lblResults.Text = "無效的密碼";
break;
default:
lblResults.Text = "在創建用戶過程中發生錯誤.";
break;

}

轉藏到我的圖書館 獻花(0) +1 分享: 微信 QQ空間 QQ好友 新浪微博 推薦給朋友

來自: glxym > 《asp.net》

以文找文 | 舉報

上一篇:asp.net2.0安全性(Login系列控件)

擺脫Login控件,自己定義登錄操作