需求要为后台操作做权限限制,如何实现,与代码无关?
网站的后台有很多的功能,比如,添加,删除,修改等等
现在要求添加的管理员,权限相对独立,每个管理员,都只能去干特定的操作,而且还要记录下日志,
现在我怎么写这个后台的权限,但是不想去他的源代码中添加各种方法代码什么的
我该怎么实现?
原系统是struts2+hibernate+spring
------解决方案--------------------可以试试用filter去控制权限。。
------解决方案--------------------我是用攔截器AuthorityInterceptor攔截除了LOGIN/OUT之外的所有ACTION,然後有一個USER_POLICY表放USER可以訪問的ACTION名稱。
你SSH的架構很容易攔截的
------解决方案--------------------创建5张表,分别是:
用户表
用户角色中间表
角色表
角色权限中间表
权限表
用户与角色,角色与权限是多对多关系。
权限表中放置要调用的action名称和方法名,形如xxx!xxxxx;还有功能描述.
在用户登录成功后,查询出该用户的所有角色;
然后对角色遍历,查出每个角色的所有权限,并把权限(xxx!xxxxx)放到一个List集合中保存
上述两个遍历完毕后,将集合List放置到Session中保存。
然后新建一个拦截器,必须实现MethodFilterInterceptor抽象类。在其中获取用户请求的URI地址,截取该地址最后的形如aaa!bbbb的字符串,判定该字符串是否存在于Session中的List集合中:
存在则有权,不存在则提示无权限。
------解决方案--------------------建立5张表:
用户表
用户角色中间表
角色表
角色权限中间表
权限表(id,method,desc)
用户与角色,角色与权限都是多对多关系。
权限表的method字段放置的是形如xxx!xxxx的action调用地址,desc放置的是该方法的功能描述
权限表的内容可以在项目完成后,编写一端代码读取XML文档中内容添加进去,
XML文档中是每个action及其方法功能的描述
用户登录成功后,级联查询出该用户的所有角色集合,
遍历角色集合,查出每一个角色的所有权限集合;
继续遍历权限集合,查出权限表中的method字段的内容放置到一个List中。
上述遍历完毕后,List中存放的就是该用户的所有能访问的action地址,将该List放置到session保存
最后建立一个拦截器,必须继承MethodFilterInterceptor抽象类实现,
在拦截器中得到用户访问的URI地址,截取该地址最后的形如xxx!xxxx的action调用地址,
然后从session取出List集合,判断截取的字符串是否存在于List中:
存在则放行,不存在则提示无权访问。
------解决方案--------------------建立5张表:
用户表
用户角色中间表
角色表
角色权限中间表
权限表(id,method,desc)
用户与角色,角色与权限都是多对多关系。
权限表的method字段放置的是形如xxx!xxxx的action调用地址,desc放置的是该方法的功能描述
权限表的内容可以在项目完成后,编写一端代码读取XML文档中内容添加进去,
XML文档中是每个action及其方法功能的描述
用户登录成功后,级联查询出该用户的所有角色集合,
遍历角色集合,查出每一个角色的所有权限集合;
继续遍历权限集合,查出权限表中的method字段的内容放置到一个List中。
上述遍历完毕后,List中存放的就是该用户的所有能访问的action地址,将该List放置到session保存
最后建立一个拦截器,必须继承MethodFilterInterceptor抽象类实现,
在拦截器中得到用户访问的URI地址,截取该地址最后的形如xxx!xxxx的action调用地址,
然后从session取出List集合,判断截取的字符串是否存在于List中:
存在则放行,不存在则提示无权访问。
------解决方案--------------------AOP filter 拦截器。。。
------解决方案--------------------这不是方法问题 而是设计问题。。你这种对权限控制肯定非常严格,,我不知道你后台是怎样设计的,但是你必须吧你程序和权限分成两部分来做,,然后通过角色控制权限,在页面里有公用的权限JSP 然后每个需要控制的页面都引入你的权限JSP。。你权限的JSP页面读取不同的角色表现出不同的按钮。