OracleMembershipProvider与登录控件使用的技巧
判断用户是否已经登录,如果没有登录则转向登录页面。参数ReturnUrl是当前请求页面,用户登录后,转向该页面。
//判断用户是否经过了验证
if (!User.Identity.IsAuthenticated)
{
//用户未经过验证,转向登录页面
Server.Transfer(FormsAuthentication.LoginUrl + "?ReturnUrl=" + Request.Path);
}
else
{
//用户经过了验证,更新当前活动时间
string strName = User.Identity.Name;
Membership.GetUser(strName, true);
}
if (!User.Identity.IsAuthenticated)
{
//用户未经过验证,转向登录页面
Server.Transfer(FormsAuthentication.LoginUrl + "?ReturnUrl=" + Request.Path);
}
else
{
//用户经过了验证,更新当前活动时间
string strName = User.Identity.Name;
Membership.GetUser(strName, true);
}
在登录页面进行小小的处理,实现“登录”按钮的点击事件,以便用户登录后转向请求页面。
protected void Login1_LoggedIn(object sender, EventArgs e)
{
string strRedirect = Request["ReturnUrl"];
if(string.IsNullOrEmpty(strRedirect))
{
strRedirect = FormsAuthentication.DefaultUrl;
}
this.Response.Redirect(strRedirect);
}
{
string strRedirect = Request["ReturnUrl"];
if(string.IsNullOrEmpty(strRedirect))
{
strRedirect = FormsAuthentication.DefaultUrl;
}
this.Response.Redirect(strRedirect);
}
用户申请帐号时,如果需要经过管理员核准后才予以使用,则在创建用户向导的“创建”按钮事件中,更新IsApproved的值
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
MembershipUser user = Membership.GetUser(CreateUserWizard1.UserName, false);
user.IsApproved = false;//用户需要验证后才能登录
Membership.UpdateUser(user);
}
{
MembershipUser user = Membership.GetUser(CreateUserWizard1.UserName, false);
user.IsApproved = false;//用户需要验证后才能登录
Membership.UpdateUser(user);
}
用户管理:核准、解锁、删除
html页使用Repeater控件
<asp:Repeater ID="RepeaterItems" runat="server" OnItemDataBound="RepeaterItems_ItemDataBound" OnItemCommand="RepeaterItems_ItemCommand">
<HeaderTemplate>
<table cellspacing="1" align="center" cellpadding="3" border="0" style="background-color: #999999;
width: 699;">
<tr class="style3" align="Center" style="font-weight: bold;">
<td class="hstyle">
用户名</td>
<td class="hstyle">
email</td>
<td class="hstyle">
取回密码时的问题</td>
<td class="hstyle">
最后活跃时间</td>
<td class="hstyle" style="width: 51px;" nowrap>
批准</td>
<td class="hstyle" style="width: 51px;" nowrap>
解锁</td>
<td class="hstyle" style="width: 51px;" nowrap>
删除</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr class="style3" onmouseover="this.style.backgroundColor='#E8F9FD'" onmouseout="this.style.backgroundColor='#ffffff'"
style="background-color: White;">
<td align="Center">
<%# Eval("UserName")%>
</td>
<td align="Center">
<%# Eval("Email")%>
</td>
<td align="Center">
<%# Eval("PasswordQuestion")%>
</td>
<td align="Center">
<%# Eval("LastActivityDate","{0:d}")%>
</td>
<td align="center">
<asp:LinkButton ID="LinkButton1" runat="server" Font-Underline="true"></asp:LinkButton>
</td>
<td align="center">
<asp:LinkButton ID="LinkButton2" runat="server" Font-Underline="true"></asp:LinkButton>
</td>
<td align="center">
<asp:LinkButton ID="LinkButton3" runat="server" Font-Underline="true"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<HeaderTemplate>
<table cellspacing="1" align="center" cellpadding="3" border="0" style="background-color: #999999;
width: 699;">
<tr class="style3" align="Center" style="font-weight: bold;">
<td class="hstyle">
用户名</td>
<td class="hstyle">
email</td>
<td class="hstyle">
取回密码时的问题</td>
<td class="hstyle">
最后活跃时间</td>
<td class="hstyle" style="width: 51px;" nowrap>
批准</td>
<td class="hstyle" style="width: 51px;" nowrap>
解锁</td>
<td class="hstyle" style="width: 51px;" nowrap>
删除</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr class="style3" onmouseover="this.style.backgroundColor='#E8F9FD'" onmouseout="this.style.backgroundColor='#ffffff'"
style="background-color: White;">
<td align="Center">
<%# Eval("UserName")%>
</td>
<td align="Center">
<%# Eval("Email")%>
</td>
<td align="Center">
<%# Eval("PasswordQuestion")%>
</td>
<td align="Center">
<%# Eval("LastActivityDate","{0:d}")%>
</td>
<td align="center">
<asp:LinkButton ID="LinkButton1" runat="server" Font-Underline="true"></asp:LinkButton>
</td>
<td align="center">
<asp:LinkButton ID="LinkButton2" runat="server" Font-Underline="true"></asp:LinkButton>
</td>
<td align="center">
<asp:LinkButton ID="LinkButton3" runat="server" Font-Underline="true"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
cs代码:
protected void Page_Load(object sender, EventArgs e)
{
//判断用户是否经过了验证
if (!User.Identity.IsAuthenticated)
{
//用户未经过验证,转向登录页面
Server.Transfer(FormsAuthentication.LoginUrl + "?ReturnUrl=" + Request.Path);
}
else if (User.Identity.Name != "admin")
{
//不是管理员,退出
//用户未经过验证,转向登录页面
Server.Transfer(FormsAuthentication.LoginUrl + "?ReturnUrl=" + Request.Path);
}
//else
//{
//用户经过了验证,更新当前活动时间
string strName = User.Identity.Name;
Membership.GetUser(strName, true);
//MembershipUser userss;userss.PasswordQuestion
if (!IsPostBack)
{
//所有用户
MembershipUserCollection userColl = Membership.GetAllUsers();
RepeaterItems.DataSource = userColl;
RepeaterItems.DataBind();
}
//}
}
protected void RepeaterItems_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
MembershipUser user = (MembershipUser)e.Item.DataItem;
if (user != null)
{
//用户尚未被核准
if (!user.IsApproved)
{
LinkButton approvedLink = (LinkButton)e.Item.Controls[1];
approvedLink.Text = "核准";
approvedLink.CommandName = "APPROVED";
approvedLink.CommandArgument = user.UserName;
}
//用户被锁定
if (user.IsLockedOut)
{
LinkButton lockLink = (LinkButton)e.Item.Controls[3];
lockLink.Text = "解锁";
lockLink.CommandName = "UNLOCK";
lockLink.CommandArgument = user.UserName;
}
//不能删除用户自己
if (!user.UserName.Equals(User.Identity.Name))
{
LinkButton deleteLink = (LinkButton)e.Item.Controls[5];
deleteLink.Text = "删除";
deleteLink.CommandName = "DELETE";
deleteLink.CommandArgument = user.UserName;
deleteLink.Attributes.Add("onclick", "return window.confirm('确定删除吗?');");
}
}
}
protected void RepeaterItems_ItemCommand(object source, RepeaterCommandEventArgs e)
{
string commandName = e.CommandName;
string argument = (string)e.CommandArgument;
if ("DELETE".Equals(commandName))
{
Membership.DeleteUser(argument);
}
else if ("UNLOCK".Equals(commandName))
{
OracleMembershipProvider oracleProvider = (OracleMembershipProvider)Membership.Provider;
oracleProvider.UnlockUser(argument);
}
else if ("APPROVED".Equals(commandName))
{
MembershipUser user = Membership.GetUser(argument);
user.IsApproved = true;
Membership.UpdateUser(user);
}
MembershipUserCollection userColl = Membership.GetAllUsers();
RepeaterItems.DataSource = userColl;
RepeaterItems.DataBind();
}
{
//判断用户是否经过了验证
if (!User.Identity.IsAuthenticated)
{
//用户未经过验证,转向登录页面
Server.Transfer(FormsAuthentication.LoginUrl + "?ReturnUrl=" + Request.Path);
}
else if (User.Identity.Name != "admin")
{
//不是管理员,退出
//用户未经过验证,转向登录页面
Server.Transfer(FormsAuthentication.LoginUrl + "?ReturnUrl=" + Request.Path);
}
//else
//{
//用户经过了验证,更新当前活动时间
string strName = User.Identity.Name;
Membership.GetUser(strName, true);
//MembershipUser userss;userss.PasswordQuestion
if (!IsPostBack)
{
//所有用户
MembershipUserCollection userColl = Membership.GetAllUsers();
RepeaterItems.DataSource = userColl;
RepeaterItems.DataBind();
}
//}
}
protected void RepeaterItems_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
MembershipUser user = (MembershipUser)e.Item.DataItem;
if (user != null)
{
//用户尚未被核准
if (!user.IsApproved)
{
LinkButton approvedLink = (LinkButton)e.Item.Controls[1];
approvedLink.Text = "核准";
approvedLink.CommandName = "APPROVED";
approvedLink.CommandArgument = user.UserName;
}
//用户被锁定
if (user.IsLockedOut)
{
LinkButton lockLink = (LinkButton)e.Item.Controls[3];
lockLink.Text = "解锁";
lockLink.CommandName = "UNLOCK";
lockLink.CommandArgument = user.UserName;
}
//不能删除用户自己
if (!user.UserName.Equals(User.Identity.Name))
{
LinkButton deleteLink = (LinkButton)e.Item.Controls[5];
deleteLink.Text = "删除";
deleteLink.CommandName = "DELETE";
deleteLink.CommandArgument = user.UserName;
deleteLink.Attributes.Add("onclick", "return window.confirm('确定删除吗?');");
}
}
}
protected void RepeaterItems_ItemCommand(object source, RepeaterCommandEventArgs e)
{
string commandName = e.CommandName;
string argument = (string)e.CommandArgument;
if ("DELETE".Equals(commandName))
{
Membership.DeleteUser(argument);
}
else if ("UNLOCK".Equals(commandName))
{
OracleMembershipProvider oracleProvider = (OracleMembershipProvider)Membership.Provider;
oracleProvider.UnlockUser(argument);
}
else if ("APPROVED".Equals(commandName))
{
MembershipUser user = Membership.GetUser(argument);
user.IsApproved = true;
Membership.UpdateUser(user);
}
MembershipUserCollection userColl = Membership.GetAllUsers();
RepeaterItems.DataSource = userColl;
RepeaterItems.DataBind();
}
posted on 2007-09-01 10:06 amber lee zhao 阅读(470) 评论(0) 编辑 收藏 举报