none
问一个关于设计系统权限的问题 RRS feed

  • 问题

  • 我现在在做一个CRM的系统,这个系统中我已经在一个表格中定义了N种的权限,我现在要把这些权限应用在页面上,如何实现?或如何去设计这个系统的权限?谢谢~

    下面是我在页面上放置权限的一些代码:

                //check user's right:
                DataTable RDT = UserClass.RolesList(AD.UserSGI());
                if (RDT.Rows.Count > 0)
                {
                    if (!bool.Parse(RDT.Rows[0]["SYS01"].ToString())) //系统管理员
                    {
                        if (!bool.Parse(RDT.Rows[0]["C03"].ToString())) //管理所有客户信息
                        {
                            if (!bool.Parse(RDT.Rows[0]["C04"].ToString())) //查看所有客户信息
                            {
                                if (!bool.Parse(RDT.Rows[0]["C02"].ToString())) //管理客户信息
                                {
                                    if (!bool.Parse(RDT.Rows[0]["C05"].ToString())) //查看客户交易记录
                                    {
                                        if (!bool.Parse(RDT.Rows[0]["C06"].ToString())) //管理拜访记录
                                        {

                                        }
                                    }
                                }

                            }
                            else
                            {
                                CRepresent.Items.FindByText("XXXXX").Selected = true;
                                CRepresent.Enabled = false;
                            }
                        }
                        else
                        {
                            CRepresent.Items.FindByText("XXXXX").Selected = true;
                            CRepresent.Enabled = false;
                        }
                    }
                }

    2010年6月29日 3:04

答案

  • 啊。代码没看完,头开始痛了…………

    像这样的权限代码太难维护了,建议参考一下基于角色的安全。它是基于URL的ASP.NET授权,相对来说比较简单,使用角色管理授权的话,一般将一种权限的功能独立到一个文件夹中,也就是浏览时的URL会相互区别开,然后在这个文件夹中添加一个web.config,配置一下授权的角色即可: 

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
     <system.web>
      <authorization>
       <allow roles="SYS01,C03,C04"/>
       <deny users="*"/>
      </authorization>
     </system.web>
    </configuration>

     这个目录就阻止了除在角色SYS01,C03,C04之外的其他用户,然后页面里面不需要再判断任何权限了。


    Please mark the post answered your question as the answer, and vote other helpful posts, so they will appear differently to other users for the same problem. 请将解决实际问题的帖子标记为“答案”,并给其他有帮助的帖子投票,这样其他人有同样问题的时候可以快速找到解决方案。谢谢!
    2010年6月29日 7:11
    版主