权限管理怎么做;
如果我现在有一个论坛,角色有管理员,版主和用户管理员可以管理所有人,对任何板块的人的增删改查;
版主只能对自己板块的人进行增删改查;
我用的是acl做的,CRUD(C=1,R=2,U=4,D=8)判断,但是crud只能判断增删改查,版主的增加和管理员的增加是不同的,应该怎么做呢?比如我Module(板块)有
get();
delete();
update();
add();但是每个角色的删除可能都不一样请问各位大虾的权限验证都是怎么做的
雪地中跪求!!!
如果太多的话可以发到
如果我现在有一个论坛,角色有管理员,版主和用户管理员可以管理所有人,对任何板块的人的增删改查;
版主只能对自己板块的人进行增删改查;
我用的是acl做的,CRUD(C=1,R=2,U=4,D=8)判断,但是crud只能判断增删改查,版主的增加和管理员的增加是不同的,应该怎么做呢?比如我Module(板块)有
get();
delete();
update();
add();但是每个角色的删除可能都不一样请问各位大虾的权限验证都是怎么做的
雪地中跪求!!!
如果太多的话可以发到
解决方案 »
- java调用mysql存储过程报错java.sql.SQLException: Callable statments not supported.
- 无法拦截action中execute之外的方法
- spring的配置文件真烦琐啊
- hibernate 查询同一天不同时间段的记录
- session Bean调用实体Bean有问题,帮忙看一下,谢谢了。
- Struts的action问题
- 分页问题,88分,解决了就结贴大部份我已经写出来了,就差上一页下一页了.
- 如何把一个CMP对应表的纪录装入内存?
- *****RMI和CORBA的问题,初学,急呀!!!******
- 急求解答关于电商网站配送范围经纬度匹配的问题~~
- 谁有 《Java EE 5 开发指南》中文版的下载?
- JNDI查找EJB时遇到的问题
然后你在权限表中新建的标识role_id, 超级=0,管理=1,普通=2 在界面中创建用户的时候 超级。管理。普通 必须 而且只能选一个,然后在分配组权限。
不知能否对你有帮助
我现在想的是我新建一个类Group
现在的类Person //人
User //用户(人的信息)
Role //角色
UserRole //用户和角色的对应类,因为角色在用户中有排列顺序
Acl //权限(用户id,CRUD,模块标识)
Module //模块Group //代表某个User属于那个组的
当我的犬在再有变化的时候怎么办,现在变成 超级 大管理 小管理 VIP 普通别告诉我还得修改源码......-------------------------------------------------------------
回复:当然,无论是论坛 是普通的网站 类似 cms都要有个栏目 对权限进行管理
例如 我们增加一个栏目 就叫用户权限管理,里面列出用户的属性,权限啊,通过dao也可以对这个栏目进行增删改查
一般对于多权限,并且有可能后期添加新权限的应用场景,不采取CRUD方式。
很可能使程序和表结构不便于理解。当然,楼主已经采用了CRUD的设置方式,那么,可以参考一种变通的方法。
(不推荐使用,不便于理解)
通常需要,用户表、角色表、操作对象表、权限配置表
用户表和角色表同11楼,从略。
操作对象表:存放CRUD的操作对象,比如 任何的板块,版主自己的板块,自己发的帖子等等。
权限配置表:角色、权限与操作对象的关联关系,比如 管理员可以增删改查任何的板块等等。
同一个角色可以对应多个操作对象
http://www.ibm.com/developerworks/cn/opensource/os-cn-shiro/index.html
我简单写点,抛砖引玉吧。当然,就不去IDE调试什么的了。有错的话,担待点吧。
一个类对应一张表,总会简单些吧?class UserGroup{//用户组(或者称为用户角色)
private long groupId;
private String gourpName;
//... Other properties , getters and setters
}
class User{//用户表
private long userId;
private String loginName;
private String loginPassword;
private UserGroup group;//所属的用户组(或者称为角色)
//... Other properties , getters and setters
}
class OperationObject{//操作对象表
private long ooId;
private String ooName;//操作对象的名称
private String re;//备注,描述
//... Other properties , getters and setters
}
class CRUDConfig{//权限配置表
private UserGroup group;
private OperationObject optObject;
//推荐 选用goupId和ooId作为联合主键
private int CRUD;
}
/* 查询某用户组对应某操作对象的权限的HQL基本如下:*/
from CRUDConfig c where c.group=? and c.optObject=?
这个问题用简单的几句话比较难以说明白。
主要的思路是需要有用户表、角色表、用户角色表、权限表、角色权限表这么5个表。
权限表可以表示为操作码,对应于不同类的方法。
为了便于权限控制,需要有用户配置、角色配置、权限配置页面,通过用户角色表关联权限。
可能没有说清楚,需要的话可邮件或其他方式联系。
人员表:人的基本信息
权限表:具体权限信息,与权限组N:1关系
权限组表:权限组,与权限1:N
人员权限组映射表:每个人属于的具体权限组可以参照windows 的用户管理,很规范
base:
权限+角色基本字段子类:
权限+角色具体字段(管理员,版主和用户具体字段)增删改的时候, 判定对应子类的权限。int delete(权限,sql)
int update(权限,sql)
int add(权限,sql)
这里有2种方法, 用抽象工厂, 多个实现类对应多个具体的增删改;
在一个实现中, 多重判定。
现在我的网站如果新加了一个板块,我是最大管理员,因为我没有把这个权限加入到OperationObject中我就没有了对此板块的操作权限了呢?