OracleMembershipProvider与登录控件使用的技巧


判断用户是否已经登录,如果没有登录则转向登录页面。参数ReturnUrl是当前请求页面,用户登录后,转向该页面。
  //判断用户是否经过了验证
        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);
    }

用户申请帐号时,如果需要经过管理员核准后才予以使用,则在创建用户向导的“创建”按钮事件中,更新IsApproved的值
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
    
{
       
            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>

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


    }

posted on 2007-09-01 10:06  amber lee zhao  阅读(470)  评论(0编辑  收藏  举报

导航