zouruixin
2011-11-23 15:19 阅读 347
已采纳

权限设计中,树状功能列表与页面按钮的权限如何区分,页面按钮如何根据权限判断是否显示

有没有前辈有相关最优的设计思路和经验呢,请分享一下,多谢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    iteye_13395 iteye_13395 2011-11-23 15:36

    树状功能和普通功能是一样的

    做一个功能权限控制:

    一个角色对应多个功能模块,在查询的时候获取当前用户的角色,然后在生成树的时候只将当前角色拥有的功能组装成树

    按钮权限也差不多,可以为功能中的按钮统一命名,如添加:add;修改:edit等等,所有的功能中的按钮都遵循这个命名规则

    在按钮权限控制中,我们首先选择角色,然后选择相应功能,然后配置相应的按钮权限

    在显示的时候通过判断当前角色是否具备当前按钮的权限,具备则显示,不具备则不显示

    对于按钮可以封装成相应的标签,这样可以省很多事

    点赞 评论 复制链接分享
  • yanjinke yanjinke 2011-11-23 15:24

    这个权限做的相当细的, 树的节点,页面按钮都当是资源来管理

    点赞 评论 复制链接分享
  • jiangguangxian jiangguangxian 2011-11-23 15:27

    权限的控制中非常的复杂,这个你的用一个清晰的头脑来分析。

    通常比较简单的权限设置中,比如servlet或者struct中,我们可以通过filter或者拦截器来控制某些文件的访问来实现。

    但是根据你的要求,需要对功能列表和按钮都实现控制,那么需要的考虑的更多一点。

    你的权限不能建立在控制url连接上,而是要转向对 一个方法的控制:

    一般的权限控制,控制方法有四种 C(reate) R(etrieve) U(pdate) D(elete)
    也就是说,一般你的Action种有 创建、查询、更新、删除几种精元操作。最后你的控制都总结为这几点,你在数据库中增加一个表,来对某一个Action的CRUD的操作权限。

    1. 在控制按钮的时候,你可以通过css来控制显示。

    2. 功能列表不建议通过js或者css,而是通过后台json来创建树最好。

    点赞 评论 复制链接分享
  • wangyijiangshui wangyijiangshui 2011-11-23 16:18

    表1 权限映射表
    表名:tbl_res_map(权限映射) 类别(表)
    字段名 字段别名 数据类型 主键 允许空/显示 默认值 说明
    pid 权限编码 varchar(50) Y N/N

    service_view 资源 varchar(50) Y N/N

    explain 说明 varchar(50) Y/N

    备注: 将系统中的所有资源全部统一编码
    service_view:资源,包括菜单名、按钮名、页面名、方法名等等
    pid和service_view合在一起为主键,标示多个资源可以编成一个编码(比如一个按钮的权限,往往还包括对应的页面、方法等许多权限,你可以将这些关联权限编为一个编码,这样赋权时要么都有,要么都没有)

    表 2 权限资源表
    表名:tbl_perm_res (权限资源) 类别(表)
    字段名 字段别名 数据类型 主键 允许空/显示 默认值 说明
    pid 权限编码 varchar(50) Y N/N

    parent_id 上级权限编码 varchar(50)

    type 权限类别 char(1) N/N 1、顶级菜单,2、菜单和页面,3、按钮
    explain 说明 varchar(50) Y/N

    备注:①、专门配置所有资源的上下级关系,以便于在分配权限的页面使用资源树的形式展示和赋权。
    我们一般从系统左侧菜单开始,顶级菜单为资源树顶级节点,子菜单一次为子资源,页面、页面按钮、请求路径、方法都为某一个模块的子资源节点……
    ②、pid和parent_id都为表tbl_res_map中提前对资源编好的编码

    表3 用户权限表
    表名:tbl_auth (用户权限) 类别(表)
    字段名 字段别名 数据类型 主键 允许空/显示 默认值 说明
    uid 账号/角色 varchar(50) Y N/N

    utype 类别 char Y N/N 1、用户,2、角色
    pid 权限编号 varchar(50) Y N/N

    备注:pid来源tbl_perm_res中的pid

    表4 角色表
    表名:tbl_role (角色) 类别(表)
    字段名 字段别名 数据类型 主键 允许空/显示 默认值 说明
    role_id 角色编号 varchar(50) Y N/N

    role_name 角色名称 varchar(50) N/Y

    备注

    表5 用户角色映射表
    表名:tbl_user_role (用户角色映射表) 类别(表)
    字段名 字段别名 数据类型 主键 允许空/显示 默认值 说明
    role_id 角色编号 varchar(50) Y N/N

    user_id 用户编号 varchar(50) Y N/N

    备注

    表 6 用户表
    表名:tbl_user (用户) 类别(表)
    字段名 字段别名 数据类型 主键 允许空/显示 默认值 说明
    user_id 账号 varchar(50) Y N/Y

    password 密码 varchar(50) N/N

    username 用户名 varchar(50) N/Y

    mobile 手机号码 varchar(24) N/Y

    备注:

    这是一个多次应用在金融行业的细粒度权限管理方案!

    点赞 评论 复制链接分享

相关推荐