• 一种来源于Microsoft Dynamics AX的权限管理设计思想


    网上有很多关于权限管理系统的设计方案以及案例,甚至有相关的可以直接使用的权限管理框架。权限管理并非我的研究对象,我也只通皮毛,今天就在专家面前班门弄斧,简单介绍一下微软Dynamics AX系统的权限管理,以及由此派生出来的一种基于.NET的权限设计思想。

    或许在看完本文后,你会觉得,我所提出的这个想法很火星,你早就知道这种方案了。不要紧,就当我在此将这些内容整理一下,以备日后参考便是了。

    演练:体验Microsoft Dynamics AX的权限管理

    1. 在Dynamics AX中创建一个项目,在此命名为StudentsPrj,这个项目非常简单,就是维护一张数据表,表里包含了学生的ID、姓名以及年龄。如何创建项目就不介绍了,项目结构如下图:
      image 
      注意上图中的SecurityKeys节点,下面有一个StudentsAdmin的Security Key,这就是AX中权限管理的关键所在。选中该节点,按下Alt+Enter,打开属性页面,设置StudentsAdmin的属性:
      image
    2. 在Students数据表上,按Alt+Enter,打开属性页面,将该表的SecurityKey设置为StudentsAdmin:
      image
    3. 同理,在Students Menu Item上,也设置SecurityKey为StudentsAdmin:
      image
    4. 打开Main Menu –> Administration –> Users窗体,往系统用户中添加一个非Admin的域账户,以便我们做测试:
      image
    5. 打开Main Menu –> Adminstration –> Setup –> User groups菜单,新建两个group,一个叫StuGuest,一个叫StuAdmin,分别表示StudentsPrj的Guest组和Admin组,单击Users选项卡,分别将Admin加入StuAdmin组,将saratoga加入StuGuest组:
      image
       
    6. 选中StuAdmin,点击上图右边的Permissions按钮,打开权限设置对话框。在对话框的底部可以看到Students Administration权限选项,选中该权限,并选择Full Control选项:
      image
    7. 同理,在User groups对话框中选择StuGuest组,同样打开上面的权限设置对话框,选择Students administration权限,并设置Access为View:
      image
    8. 退出Dynamics AX,重新以Admin账户登录,进入Students project菜单,在Common Forms下有一个Students的菜单项,单击该菜单项,将打开Students窗体。你可以在这个窗体中执行增、删、改操作:
      image
    9. 退出Dynamics AX,在AX的图标上单击右键,选择“Run as” 选项,以saratoga账户登录AX,你将发现,你仅可浏览Students记录。无法对其进行增、删、改操作:
      image

    思考:Microsoft Dynamics AX的权限管理设计

    从上面的演练可以看到,Security Key是Dynamics AX的权限管理的核心。Security Key是一种对象,它关联了角色与权限:权限设置在Security Key上,而不是设置在角色上,而Security Key又关联了权限与系统中的对象。因此,它可以很明确地表述“谁在什么上有什么样的权限”。

    我觉得我们可以在.NET的权限设计上,利用.NET的Attribute来模拟Security Key的功能。比如,我们可以设计一个MyPermissionAttribute,使其继承于PermissionAttribute,然后在对象上,应用这个MyPermissionAttribute,以表示该对象可以接受MyPermission的设置;之后提供一个界面,设计某些角色在MyPermission上具有什么权限,这样,也就意味着这些角色在MyPermission所修饰的对象上,具有设置的权限。这要比直接在角色上直接设置权限更加灵活。

    使用Attribute的另一个好处就是,我们可以利用对象的继承关系来设计权限的继承关系,就好比AX中,Security Key都可以设置Parent Key一样。如果设置Parent Attribute具有Full Control的权限,那么可以认为,其子Attribute也具有Full Control的权限。

    这些都是个人想法,具体细节还需要在实践中去体会和把握。

  • 相关阅读:
    服装色彩进阶_新浪公开课_新浪教育_新浪网
    服装搭配_新浪公开课_新浪教育_新浪网
    北京服装学院公开课:民族服饰设计实践_全5集_网易公开课
    浙江理工大学公开课:设计与生活_全6集_网易公开课
    腾讯课堂-草图大师 Sketchup 初级到精通视频讲座
    案例:焦点图轮播特效
    分享:响应式布局
    案例:用JS实现放大镜特效
    案例:人人网评论功能
    mook_百度百科
  • 原文地址:https://www.cnblogs.com/daxnet/p/1781201.html
Copyright © 2020-2023  润新知