日期:2014-05-20  浏览次数:20624 次

需求要为后台操作做权限限制,如何实现,与代码无关?
网站的后台有很多的功能,比如,添加,删除,修改等等

现在要求添加的管理员,权限相对独立,每个管理员,都只能去干特定的操作,而且还要记录下日志,

现在我怎么写这个后台的权限,但是不想去他的源代码中添加各种方法代码什么的

我该怎么实现?

原系统是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页面读取不同的角色表现出不同的按钮。