Asp.net2.0身份验证技术学习入门---角色管理(二)

  今天接着上一篇讲,说一下角色管理的具体使用。以上一篇文章里的Rloes.aspx文件代码进行讲解。

1、显示所有的角色

  首先在页面里添加一个ListBox1控件用来显示角色数据,之后在代码页里把当前的所有角色名称绑定给这个ListBox1。

ListBox1.DataSource  =  Roles.GetAllRoles(); // 将现有的所有角色绑定到ListBox
ListBox1.DataBind();

这里使用Roles类的GetAllRoles方法返回所有的角色数据。

2、显示所有的用户

   在页面里添加一个ListBox2控件用来显示用户数据,之后在代码页里把当前的所有用户名称绑定给这个控件。

ListBox2.DataSource  =  Membership.GetAllUsers(); // 将现有的所有用户绑定到ListBox
ListBox2.DataBind(); 

这里使用Membership的GetAllUsers方法返回所有用户数据。

3、显示一个用户所属的角色

  在页面里添加一个ListBox3控件用来显示某个用户所属的角色,添加一个Label1用于显示选中用户的名称,再添加一个Button3,之后在Button3_Click里写一段程序,当用户从ListBox2控件中选择了一个用户后点击Button3就会把该用户所属的角色显示到ListBox3中,注意一个用户可以有一个或多个角色,也可以没有角色。

if  (ListBox2.SelectedIndex  >=   0 ) // 判断是否选择了用户
         {
            Label1.Text 
= ListBox2.SelectedValue;
            ListBox3.DataSource 
= Roles.GetRolesForUser(ListBox2.SelectedValue);//把该用户所属的角色绑定给ListBox
            ListBox3.DataBind();
        }

        
else
        
{
            ListBox3.Items[
0].Text = "请先选择用户!";
        }

首先使用IF判断一下用户有没有在ListBox2里选择一个用户,如果选了就用Roles的 GetRolesForUser方法返回我们选择用户的角色,方法的参数是我们所选择的用户名称,否则就提示先选择用户。

4、显示一个角色所包含的用户

  在页里添加一个BulletedList1控件用于显示我们选择的角色所包含的用户,添加一个Label2用于显示选中角色的名称,再添加一个Button6,在Button6_Click里加入代码

if  (ListBox1.SelectedIndex  >=   0 ) // 判断是否选择了角色
         {
            Label2.Text 
= ListBox1.SelectedValue;
            BulletedList1.DataSource 
= Roles.GetUsersInRole(ListBox1.SelectedValue);//把该角色包含的用户绑定显示
            BulletedList1.DataBind();
        }

        
else
        
{
            Response.Write(
"请先选择角色!");
        }

先判断一下是否在ListBox1里选择了一个角色,如果选择了就用Roles的 GetUsersInRole方法返回这个角色所包含的用户并赋值给BulletedList1,这个方法的参数里是我们选择的角色的名称。

5、创建一个新角色

  在页里添加一个TextBox1和Button1,在Button1_Click里写入代码

try
        
{
            Roles.CreateRole(TextBox1.Text);
//创建新角色                
            Response.Write(TextBox1.Text + " 角色创建成功!");
            ListBox1.DataSource 
= Roles.GetAllRoles();//重新绑定角色显示
            ListBox1.DataBind();
        }

        
catch  (Exception ex)
        
{
            Response.Write(ex.Message);
//如果出错,输出错误信息
        }
      

这里使用了try catch语句,try代码段里写的是我们想要做的事情,catch里写的是如果我们要做的事情出现了错误就把错误的原因显示出来,我这里只是使用了try catch语句的一个基本用法,对于这个语法的更多知识可以到MSDN里查询在这里就不多说了。代码中我们使用Roles类的CreateRole方法来创建一个新角色,参数里是我们在TextBox1里输入的新角色的名称,如果我们输入了一个已经存在的角色名称,则catch代码段会给我们提示出错误信息。

6、删除一个角色 

  在页里添加一个TextBox3和Button5,在Button5_Click里写入代码

try
        
{
            Roles.RemoveUsersFromRole(Roles.GetUsersInRole(TextBox3.Text), TextBox3.Text);
            Roles.DeleteRole(TextBox3.Text);
            Response.Write(TextBox3.Text 
+ " 角色已经删除!");

            ListBox1.DataSource 
= Roles.GetAllRoles();//重新绑定现有的所有角色
            ListBox1.DataBind();
        }

        
catch  (Exception ex)
        
{
            Response.Write(ex.Message);
        }

这里注意如果一个角色里包含有用户的话,那么是不能够直接删除的,要先用Roles的 RemoveUsersFromRole方法把该角色所包含的用户从角色中清除掉(用户数据不会被删除只是和这个角色没关系了),然后再用DeleteRole方法把角色删除掉。RemoveUsersFromRole方法的参数里是该角色所包含的所有用户及该角色名称,这里先使用Roles.GetUsersInRole(TextBox3.Text)返回该角色包含的用户。Roles.DeleteRole方法的参数里是我们要删除的角色的名称。

7、给一个用户添加角色

   在页面里添加一个Button2控件,在Button2_Click里写入代码

try
        
{
            Roles.AddUserToRole(ListBox2.SelectedValue, ListBox1.SelectedValue);
//把用户添加到角色里
            Response.Write(ListBox2.SelectedValue + " 已经添加到 " + ListBox1.SelectedValue + " 角色中!");

            ListBox3.DataSource 
= Roles.GetRolesForUser(ListBox2.SelectedValue);//把该用户所属的角色绑定给ListBox
            ListBox3.DataBind();
        }

        
catch  (Exception ex)
        
{
            Response.Write(ex.Message);
        }
        

在使用的时候,先在ListBox2里选择一个要进行操作的用户,再在ListBox1里选择要给这个用户添加的角色,之后使用Roles类的AddUserToRole方法把LIstBox1的选择的角色添加给ListBox2里选择的用户,这个方法参数里第一个是用户名称,第二个是角色名称。

8、删除一个用户的角色

  在操作的时候,先选择一个用户,点击按钮查看它所属的角色,它所属的角色将显示在ListBox3里,这时候在ListBox3里显示的角色里选择一个多或个想要去除的角色(按Ctrl进行多选)之后点击按钮把这个用户的某个角色去除掉。在Button4_Click里写入代码:

if  (ListBox2.SelectedItem  !=   null   &&  ListBox3.SelectedItem  !=   null )
        
{
            
int[] iSelected = ListBox3.GetSelectedIndices();//用已选择的角色索引值建立一个数组
            string[] sRoles = new string[iSelected.Length];//建立一个数组存放多个角色数据

            
for (int i = 0; i < iSelected.Length; i++)
            
{
                sRoles[i] 
= ListBox3.Items[iSelected[i]].Value;//给角色数组赋值
            }


            
try
            
{
                Roles.RemoveUserFromRoles(ListBox2.SelectedValue, sRoles);
//删除用户的一个或多个角色
                Response.Write("用户" + ListBox2.SelectedValue + "的所选角色已删除!");

                ListBox3.DataSource 
= Roles.GetRolesForUser(ListBox2.SelectedValue);//重新绑定一次用户的角色
                ListBox3.DataBind();
            }

            
catch (Exception ex)
            
{
                Response.Write(ex.Message);
            }

        }

        
else
        
{
            Response.Write(
"请先选择一个用户和一个角色!");
        }

  首先用IF语句来判断一下,有没有选择用户和要去除的角色,如果有,就建立一个INT数组,把所选择的角色项的索引存放在这个数组中,接着再建立一个字符串数组,用于存放所选择的角色名称,接下来用FOR循环来给字符串数组赋值,把我们选择的角色名称都赋到数组中,之后调用Roles类的RemoveUserFromRoles方法把我们选择的用户的相关角色去除掉,方法的参数第一个是用户名,第二个是角色名称。最后,记的要给ListBox3设置SelectionMode="Multiple"表示可以进行复选。

  好了,到这里页面的代码介绍就结束了,我的这个Roles.aspx页做的很粗糙,所使用的有些控件比如ListBox也可以换成DropDownList或CheckBoxList等。

  下一篇里要讲一下,如何在实际应用中使用角色来限制访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值