日期:2014-05-19  浏览次数:20620 次

SSH系统 权限控制
我现在用SSH做一个团购系统,现在对权限进行控制,我现在的想法是这样的:
将所有的菜单都做个标记放到数据库中,当用户进行访问的时候就从数据库中查出用户是否有访问这些菜单的权利,有就把菜单显示出来,没有就不显示,不知道这样的想法可不可以,所有的菜单都做标记放到数据库中,可不可取?有没有更好的办法?

------最佳解决方案--------------------
如果数据量比较大就更要这么做了,毕竟启动应用的时候没有人用系统,时间长一点也没什么,要是换作登陆时根据用户的权限查询,一来,效率很成问题,你让用户等个2-3秒还没什么,等个10多秒,谁还用你的系统?二来,如果并发量也比较大,和数据库的交互显然要频繁得多,有可能导致服务器压力过大,对正在做操作的用户也会造成影响。何况修改菜单的操作不会很频繁,就算是并发数比较大,可以选择夜间没什么业务量的时段修改,修改后同时将应用范围中的数据更新也不是件麻烦事儿
------其他解决方案--------------------
我们公司就是这样做的,分为:菜单,角色,用户
先为把菜单定义好放在数据库中
可以动态为角色分配菜单
然后可以动态给用户赋予角色
------其他解决方案--------------------
同意楼上的菜单、角色、用户,菜单还可以分几级菜单控制来设计,都可以放到数据库中
------其他解决方案--------------------
同意楼上的菜单、角色、用户,菜单还可以分几级菜单控制来设计,都可以放到数据库中
------其他解决方案--------------------
lz意思是不是说,用户只能看到自己有权限的菜单,如果没有此权限,就看不到对应菜单?
这样挺好的,也是很大众化的做法

但有时候,比如A用户本来有删除权限的,后来不给他删除权限了,但他已经记住执行删除时的url路径了,那么他还可以直接用路径访问,虽然这个不太可能发生,但预防一下还是没坏处的,在增加个权限拦截器吧,每次进入控制器层时验证一下
------其他解决方案--------------------
引用:
恩,谢谢各位了,在问一下,对于那些公用的并且在多个页面显示的菜单各位是怎么处理的?我的想法是当服务器启动的时候就初始化这些信息,然后放到ServletContext或者是cache中,不知道各位是怎么处理的,刚工作,对这些处理还不是很熟,希望各位帮帮我


菜单应该在服务器启动的时候,统一放在应用范围(application或servletcontext)内,然后根据登陆用户的权限,显示菜单的子集合
------其他解决方案--------------------
恩,谢谢各位了,在问一下,对于那些公用的并且在多个页面显示的菜单各位是怎么处理的?我的想法是当服务器启动的时候就初始化这些信息,然后放到ServletContext或者是cache中,不知道各位是怎么处理的,刚工作,对这些处理还不是很熟,希望各位帮帮我
------其他解决方案--------------------
恩 dickli1986,不过我有个疑问如果数据量很大放到application或servletContext中是否很好,还有管理员后台可以控制前台这些公用菜单的显示,修改显示情况以后,必须修改数据库同时修改application中存的值,是否是这样?可以给我讲讲cache吗?
------其他解决方案--------------------
恩 的确是这样,还有那个cache是怎么回事,可以给我讲讲吗?不好意思啊,问这么多
------其他解决方案--------------------
路过看看,来学习的!
------其他解决方案--------------------
说的好