权限控制问题 另外还问一下:为什么有的系统用AOP来做权限控制,和用过滤器有什么区别吗?AOP和过滤器的区别我知道的,我是想问这两种不同的方式做权限控制,各在什么场合下比较合适。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的action可以继承 MappingDispatchAction 这样就不用method 参数了 把权限表里面的所有东西全部查出来放在map里面,这样就不用写if else了 LZ可以看一下这篇文章http://dev.yesky.com/25/2478525.shtml 关于权限控制的数据库表设计,请参看http://www.noahweb.net/mail/2/Project.htm。 我不太清楚楼主的困惑在那里1种方案功能和角色是多对多角色和用户是一对多2种方案功能和角色是多对多组和角色是多对多组和用户是一对多3.兼容方案用户和功能多对多你可以选择:方案1或方案2或(方案1/方案2)+方案3一条sql就能判断出来是否有权限,做好索引使用拦截器就行了,应该是所有的请求都走.do功能编号直接随便排1.......10000 判断是否有权限无需那么多if else 直接一条sql看看当前用户能不能取到数就行了(这里面可以做个cache,cache最好有失效时间,修改权限结构时清除全部cache,另外注意sql注入) 直接一条sql看看当前用户能不能取到数就行了的意思就是写一条sql就可以知道当前用户是否有访问某功能的权限,我不喜欢用csdn的短消息,感觉比较鸡肋,呵呵.这一条sql好好优化下,不会有性能问题的,lz放心吧. 针对我的设计,好像你说的方法不能实现的。我还是需要判断是什么操作才能到数据库去查询,因为那个权限哪里我用的INT的位来表示的是否有权限。模块表是只有模块名称的,而不是功能表,没有记录到功能的。 关于越权访问 我说一点就是,url不给用户显示 我说的是一个思路,你不能指望大家完全按你的需求做,我觉得那样的答案太难寻找了,模块表你当成功能表不就行了吗,你增加一个模块编号不就行了,至于int位,可以在数据库中或java中做映射啊!,你再想想. 我觉得,这个问题是很好解决的,不过走的是另外一条路。一般我做这个权限控制的时候,都是在用户登陆的时候,就把其权限写入到SESSION中固定的位置如session("***")。然后在所有执行页面取得此用户的session("***")值。如果是NULL说明未登陆,然后可以自己规定为0是什么权限为1是什么权限。这样的好处是:反正在登陆的时候要查询数据库,顺带做一下权限检测也不会浪费什么时间的。另外重新判断的话是不需要查询数据库的,而且可以很轻松地分级,实现多种操作权限,并且代码编写也非常容易。坏处么,我也不清楚,要不然自己也不会用这种方式了。 新人遇到困难,请走过艰辛新人路的大侠们帮帮忙吧 result.next()出现异常"ORA-01001: 无效的游标" 一楼兄弟: jacob调用com中的方法!急!!送100分! 可以给自己加分的吗? tomcat好像运行正常,不过用JavaBean时就是不行 什么是轻量组件,什么是重量组件? Myeclipse导出java项目成为jar文件,运行之后出现各种问题,求各位大神解答! 急!关于往数据库插入数据的问题 bejson今日新增 json字符串转成java的实体类POJO代码 saveErrors方法未定义问题 Hibernate分页[按需求查询字段]
http://dev.yesky.com/25/2478525.shtml
功能和角色是多对多
角色和用户是一对多
2种方案
功能和角色是多对多
组和角色是多对多
组和用户是一对多3.兼容方案
用户和功能多对多你可以选择:
方案1或方案2或(方案1/方案2)+方案3
一条sql就能判断出来是否有权限,做好索引
使用拦截器就行了,应该是所有的请求都走.do
功能编号直接随便排1.......10000
判断是否有权限无需那么多if else 直接一条sql看看当前用户能不能取到数就行了(这里面可以做个cache,cache最好有失效时间,修改权限结构时清除全部cache,另外注意sql注入)
的意思就是写一条sql就可以知道当前用户是否有访问某功能的权限,我不喜欢用csdn的短消息,感觉比较鸡肋,呵呵.
这一条sql好好优化下,不会有性能问题的,lz放心吧.
模块表是只有模块名称的,而不是功能表,没有记录到功能的。
我说的是一个思路,你不能指望大家完全按你的需求做,我觉得那样的答案太难寻找了,模块表你当成功能表不就行了吗,你增加一个模块编号不就行了,至于int位,可以在数据库中或java中做映射啊!,你再想想.
一般我做这个权限控制的时候,都是在用户登陆的时候,就把其权限写入到SESSION中固定的位置如session("***")。然后在所有执行页面取得此用户的session("***")值。如果是NULL说明未登陆,然后可以自己规定为0是什么权限为1是什么权限。
这样的好处是:反正在登陆的时候要查询数据库,顺带做一下权限检测也不会浪费什么时间的。另外重新判断的话是不需要查询数据库的,而且可以很轻松地分级,实现多种操作权限,并且代码编写也非常容易。
坏处么,我也不清楚,要不然自己也不会用这种方式了。