none
求基于ASP.NET+数据库的权限设置方法 RRS feed

  • 问题

  • 我想在基于ASP.NET+ACCESS数据库的项目中实现用户权限可以多选的设置方法,以把系统中的权限细化,求解决方案。
    2010年7月6日 1:59

答案

  • 你好,

    我上面已经说了。

    你的数据库里需要保存用户信息、角色信息和角色对应的页面信息。

    当你访问某个需要某权限访问的页面时,你根据用户id从数据库中查处一个关于该用户能访问的页面list,然后检查当前访问的页面是否在该list中。

    如果不在就重定向登录页面。

    我觉得这个在后台做比较好,如果你有非要在前台做的理由,能否说说。


    Microsoft Online Community Support
    2010年7月9日 3:58

全部回复

  • 访问什么功能的权限?多选权限是什么意思?



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年7月6日 19:00
    版主
  • 就是在一个基于WEB开发的系统中设置了很多的权限,在其中的一个权限设置页面中可以根据实际需要进行多选。

    比如:管理用户的权限,管理商品的权限,查看商品的权限,管理客户的权限,查看客户的权限......根据用户的需要可以随意组合。

    2010年7月7日 3:26
  • 听起来就是角色系统啊?

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年7月7日 3:35
    版主
  • 你说的是两个问题还是一个问题:

    1、实现这种权限应该如何数据库设计

    2、设计OK啦,如何编码实现


    Ferry
    2010年7月7日 4:12
  • 一下思路供参考:

    1、模块一个表

    2、权限一个表

    3、模块的权限一个表

    4、角色表(如果需要)或者还需要个角色权限表

    5、用户表

     

    编码实现就简单,可以用GridView嵌套,前台页面用JS设置全选、全取晓,提交时,遍历,构造SQL


    Ferry
    2010年7月7日 4:18
  • 权限管理的我都实现了(后台管理界面),我想知道如何把这些权限应用到页面中(前台给最终用户操作的界面)?

    就是在前台怎么根据用户的ID判断他有什么权限?

    2010年7月7日 8:32
  • 你好,

    数据库里面不是保存了用户的权限嘛。

    根据当前用户id判断他是否有权限访问某个页面,否则转向。所以你的数据库里要保存权限对应的页面的名字,这样方便后面的控制。


    Microsoft Online Community Support
    2010年7月8日 1:44
  •  这是我在前台的判断用户权限的代码,比较乱,想找更科学的办法。

               //check user's right:
                //if (!RightsClass.Rights("SYS01,C01,C02,C03,C04,C05,C06,S01"))
                //{
                //    ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "ToolTip", "alert('没有访问该页面的权限。');window.location='"+Request.UrlReferrer.ToString()+"';", true);
                //}
                //else
                //{
                //    if (RightsClass.Rights("C02"))
                //    {
                //        CRepresent.Items.FindByText(UserClass.UserInfoBySGI(AD.UserSGI()).Rows[0]["UCNName"].ToString()).Selected = true;
                //        CRepresent.Enabled = false;
                //    }
                //    if (RightsClass.Rights("C04"))
                //    {
                //        btNew.Enabled = brUpdate.Enabled = btDelete.Enabled = false;
                //    }
                //    if (!RightsClass.Rights("C05"))
                //    {
                //        btCards.Enabled = false;
                //    }
                //    if (!RightsClass.Rights("S01"))
                //    {
                //        btSO.Enabled = false;
                //    }
                //    if (!RightsClass.Rights("C06"))
                //    {
                //        btVisit.Enabled = false;
                //    }
                    DoSearch();
                //}

    2010年7月8日 1:45
  • 防沉标记
    2010年7月9日 2:35
  • 你好,

    我上面已经说了。

    你的数据库里需要保存用户信息、角色信息和角色对应的页面信息。

    当你访问某个需要某权限访问的页面时,你根据用户id从数据库中查处一个关于该用户能访问的页面list,然后检查当前访问的页面是否在该list中。

    如果不在就重定向登录页面。

    我觉得这个在后台做比较好,如果你有非要在前台做的理由,能否说说。


    Microsoft Online Community Support
    2010年7月9日 3:58
  • 楼上的方法不错,但我想知道,如果页面上有个按钮是根据权限来设置他Enable属性的,那怎么做呢?谢谢。

    2010年7月11日 6:25
  • 你好,

    还是那样的做法。

    这个enable根据什么权限来判断?然后你把用户的权限读取出来对比,如果包含该权限就enable。


    Microsoft Online Community Support
    2010年7月12日 1:21