权限控制问题 另外还问一下:为什么有的系统用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是什么权限。这样的好处是:反正在登陆的时候要查询数据库,顺带做一下权限检测也不会浪费什么时间的。另外重新判断的话是不需要查询数据库的,而且可以很轻松地分级,实现多种操作权限,并且代码编写也非常容易。坏处么,我也不清楚,要不然自己也不会用这种方式了。 求助-不知名的错误 个人项目做什么好? 高手帮帮忙(报错问题)!!!!!! fckeditor输入时自动加p标签 在Spring中使用Struts点击提交按钮后说Servlet action is not available??? 想认识北京狂热编程的朋友。 有关Spring 和 Hibernate 的问题, 高手请进 如何解决XML和Web Service调用的&的问题 eclipse 能调试服务端代码吗?比如EJB 写EJB需要那些类库,到哪里去下载这些类,我装了Jbuilder8,但没找到EJB的类库 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是什么权限。
这样的好处是:反正在登陆的时候要查询数据库,顺带做一下权限检测也不会浪费什么时间的。另外重新判断的话是不需要查询数据库的,而且可以很轻松地分级,实现多种操作权限,并且代码编写也非常容易。
坏处么,我也不清楚,要不然自己也不会用这种方式了。