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);
}
}
用户与角色管理在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;
}
|