授权管理是如何实现的
我做的一个系统需要给各个用户对不同的部分有管理权限,我见过这样的界面,出现所有的界面然后用复选按扭给用户授权的,请教各位一下这方面的内容的数据库设计 是怎么实现的.
[解决办法]
用户表(u)
userid,username
权限表
powerid,powername
角色表
ruleid,rulename
角色权限表
ruleid,powerid;
用户角色表
userid,ruleid
权限记录:1,修改用户 2,删除用户 3,查询用户 4,配置视频
角色记录: 1,系统管理员 2,普通用户
用户记录:awusoft,苏某某
角色权限表记录:1,1(表示角色1有1权限,也就是系统管理员有修改用户的权限) 1,2(角色1有2权限)
用户角色表记录:awusoft,1 awusoft 2(用户awusoft是系统管理员也是普通用户,它拥有两个角色的权限 <根据角色权限表得到> )
在配置的时候有些是配置角色的权限的,然后给用户配置角色,有些是直接配置给用户的,就我的思路是加上角色的.
首先是页面上显示一个角色的编号和名称:然后下边列出了所有的权限,如果选 中某一个权限就会把这个权限的id和当前角色的id一起写到角色权限表里去.
同理,一个角色对应多个权限,那么一个用户也对应多个角色,所以有这样的页面:
显示一个用户的编号和名称,然后列出所有的角色id,如果选中了某一个角色就会把这个角色的id和当前用户的id一起写到用户角色表里去.
你也可以不要角色,就建三个表用户表,权限表,用户权限表
显示上显示一个用户的信息,下边列出所有的权限,选中某一个权限就把这个权限的id和当前用户的id写进到用户权限表里去.
[解决办法]
每个用户还限制访问地区,店铺,部门3个等级的权限.
这个应该是查询数据的时候,数据有些是不能看的.原理都差不多,不过
每个用户对每个系统模块,分别有查看,查询,新增,修改,删除5类权限,
这个是最基本的,其他的一些在控制数据查询的时候就可以了啊.也就是写在sql语句里边
[解决办法]
做一个 用户——权限 的映射,如果规模大的话,加上一层 用户——角色——权限
在数据库设计的时候就把这些做成一个库的若干个表就好,表间有映射,然后通过条件查询来实现权限的分配
[解决办法]
好象是过滤器 就能做
别的都不用该
在过滤器判断一下 就O了
[解决办法]
好象是过滤器 就能做
别的都不用该
在过滤器判断一下 就O了
--------------------------------好厉害,几百个页面做几百个判断
[解决办法]
呵呵 最近也在考虑做权限的问题啊 一起探讨啊 在博客里也有几篇相关的文章哦
[解决办法]
数据库的设计上面已经有人说了
在程序里面控制可以采用屏蔽链接,虽然链接看不到了但是通过在浏览器地址栏输入url也是可以访问的,所以还需要用filter做一下控制,前提是你需要将各个模块所对应的url设计好
[解决办法]
看一下jive了,用代理模式来做
[解决办法]
我现在也在做简单的权限管理啊 这是我设计的表 大家看看啊
表名: permissionList (记录所有功能)
BH VARCHAR2(10) primary key, -- 编号 (唯一)
MC VARCHAR2(40) not null, -- 名称
YWMC VARCHAR2(4000), -- 英文名称
SJMKM VARCHAR2(10), -- 上级模块名称 *
MKURL VARCHAR2(200), -- 模块url
SXH VARCHAR2(2), -- 顺序号
CZJB VARCHAR2(10), -- 操作级别(暂时不用)
PIC VARCHAR2(200), -- 菜单的图片
MKSJSM VARCHAR2(4000), -- 本模块设计说明
STATUS VARCHAR2(2) default 1 -- 本模块状态
SQL:
CREATE TABLE permissionList
(
BH VARCHAR2(10) primary key, -- 编号 (唯一)
MC VARCHAR2(40) not null, -- 名称
YWMC VARCHAR2(4000), -- 英文名称
SJMKM VARCHAR2(10), -- 上级模块名称 *
MKURL VARCHAR2(200), -- 模块url
SXH VARCHAR2(2), -- 顺序号
CZJB VARCHAR2(10), -- 操作级别(暂时不用)
PIC VARCHAR2(200), -- 菜单的图片
MKSJSM VARCHAR2(4000), -- 本模块设计说明
STATUS VARCHAR2(2) default 1
)
2.系统角色信息
表名: roleList (记录所有角色)
BH VARCHAR2(10) not null, -- 编号(唯一)
MC VARCHAR2(50) not null, -- 角色名称
COMPID VARCHAR2(10), -- 公司ID
BZSM VARCHAR2(50) -- 备注说明
SQL:
CREATE TABLE roleList
(
BH VARCHAR2(10) PRIMARY KEY,
MC VARCHAR2(50) not null,
COMPID VARCHAR2(10),
BZSM VARCHAR2(50)
)
3.系统用户信息
表名: userList (记录所有用户)
USERID VARCHAR2(20) primary key, -- 用户ID 主键
USERNAME VARCHAR2(20) NOT NULL, -- 用户名称
USERPASS VARCHAR2(20) NOT NULL, -- 用户密码
USERBM VARCHAR2(20) , -- 用户别名
ZCSJ VARCHAR2(20), -- 注册时间
COMPID VARCHAR2(10), -- 公司ID
DEPTID VARCHAR2(10), -- 部门ID
DLSJ VARCHAR2(20), -- 登录时间
DLIP VARCHAR2(20), -- 登录IP
LXDH VARCHAR2(20), -- 联系电话
EMAIL VARCHAR2(50), -- E-MAIL地址
LXDZ VARCHAR2(100), -- 联系地址
SHZT VARCHAR2(1), -- 审核状态 1.已审核 0.未审核
SHRY VARCHAR2(20), -- 审核人员
SHSJ VARCHAR2(20) -- 审核时间
SQL:
CREATE TABLE userList
(
USERID VARCHAR2(20) PRIMARY KEY,
USERNAME VARCHAR2(20) NOT NULL,
USERPASS VARCHAR2(20) NOT NULL,
USERBM VARCHAR2(20) ,
ZCSJ VARCHAR2(20),
COMPID VARCHAR2(10),
DEPTID VARCHAR2(10),
DLSJ VARCHAR2(20),
DLIP VARCHAR2(20),
LXDH VARCHAR2(20),
EMAIL VARCHAR2(50),
LXDZ VARCHAR2(100),
SHZT VARCHAR2(1),
SHRY VARCHAR2(20),
SHSJ VARCHAR2(20)
)
4.系统角色功能信息
表名: rolePermission
ID VARCHAR2(20) primary key -- 自动生成ID 如: 200610100840018387(一)
ROLEBH VARCHAR2(10) not null, -- 角色编号
PERMISSIONBH VARCHAR2(20) not null, -- 模块编号
BZ VARCHAR2(40), -- 备注
SQL:
CREATE TABLE rolePermission
(
ID VARCHAR2(20) PRIMARY KEY ,
ROLEBH VARCHAR2(10) not null,
PERMISSIONBH VARCHAR2(20) not null,
BZ VARCHAR2(40)
)
5.系统用户角色信息
表名: userRole
ID VARCHAR2(20) primary key -- 自动生成ID 如: 200610100840018387(唯一)
ROLEBH VARCHAR2(10) not null, -- 角色编号
USERBH VARCHAR2(20) not null, -- 用户编号
BZ VARCHAR2(40), -- 备注
SQL:
CREATE TABLE userRole
(
ID VARCHAR2(20) PRIMARY KEY,
ROLEBH VARCHAR2(10) not null,
USERBH VARCHAR2(20) not null,
BZ VARCHAR2(40)
)
[解决办法]
简单的权限可以使用字段来表明,比喻说status,等于0的时候可以修改,等于的时候可以删除,等等,复杂的权限系统建议使用acegi来实现了,他也是一个filter,不过实现起来比你自己写filter简单多了,而且功能也非常的好
[解决办法]
过滤他有哪些授权管理的功能点.再给别人授权.
[解决办法]
关于用户权限的,我用OPENLDAP实现,感觉不错
[解决办法]
用户信息表(userInf)
字段名称(中文)字段名称(英文)数据类型为空主键备注
用户编号userIdVarchar(17)
登陆姓名userNamevarchar(10)唯一索引
用户角色userRolechar(1)0:管理员;1:普通用户
角色信息表(roleInf)
字段名称(中文)字段名称(英文)数据类型为空主键备注
角色编号roleIdvarchar(17)
角色名称roleNamevarchar(30)不能重复
角色权限关系表(popedomInf)
字段名称(中文)字段名称(英文)数据类型为空主键备注
角色权限关系编号popedominfidvarchar(17)
角色编号roleidvarchar(17)外建:roleinf.roleid
功能代码functionidvarchar(17)见附表
权限编号poweridvarchar(17)见附表
权限信息表(powerInf)
字段名称(中文)字段名称(英文)数据类型为空主键备注
权限编号powerIdvarchar(17)
权限名称powerNamevarchar(30)不能重复
先建立角色,然后给相应角色建立权限,建用户的时候只要选想应的角色就行了
写一个通用页面,判断登录用户是否具有该页面的权限,每次只要在页面里面导入这个页面就行了
[解决办法]
自己实现比较麻烦,可以利用一个现成权限管理系统,比如acegi
你可以指明权限分类,以及哪些方法哪些地址是什么角色有权限
在页面中也提供tag,自动显示当前角色的用户能看到的界面