我们现在使用spring security来实现权限认证的控制,因为之前系统里只有两种角色,所以将角色的权限都写死在配置文件里面了.但是现在根据需求,要新增角色了,所以权限认证不能写死在配置文件里面了,需要一个类来实现动态添加.也就是当数据库新增一个角色之后,这个角色应该有相应的权限,然后这个负责控制权限认证的类就能给这个新增的角色动态添加到系统里面去,并且这个新增的角色只能访问它所拥有权限的 模块.大概就是这样子咯,因为第一次接触spring security,所以不懂,主管说要我去看下acegi,但是我没思路啊,有做过此类系统的大侠不吝赐教哦,谢谢

解决方案 »

  1.   

    acegi和spring security的学习曲线过高,所以会的人比较少
      

  2.   

    for 4楼:
    主要是新增一个角色之后就会默认的给这个角色赋予权限,然后管理员还可以修改一个角色对应的权限
    现在的问题是之前的系统在配置文件里面写死了访问权限,就只有这两种角色
    而现在要动态添加了,就是新增角色所具有权限的模块也可以访问到
    如果不写个类来动态实现,现在的系统还是写死在配置文件里面的
    即时你新增的角色赋予再多的权限,也不能访问任何模块
      

  3.   

    是WEB项目吗?如果是WEB项目,我可以给些意见
      

  4.   

    对啊
    就是web项目啊
    现在的角色新增以后默认就会有一部分权限的
    而且角色可以重新指派权限
    但是以前只有两种角色,所以就在配置文件里面写死了
    那现在新增角色后,如果不修改配置文件,具有新增的这种角色的用户就不能访问任何模块了 
      

  5.   

    就比如:我之前系统里面的两种角色是admin和user
    spring security的配置文件里面是:
    <http entry-point-ref>
    <intercept-url pattern="*.do" access="admin,user" />
    </http>
    如果我现在新增了一个角色manager
    就要手动去修改配置文件,给上面的access属性重新赋值,access="admin,user,manager"
    这样之后,拥有manager角色的用户才能访问系统
    但是我现在需要的是一个类去动态实现,而不是每次新增角色之后都要手动去修改配置文件
      

  6.   

    要实现动态的角色权限分配,就不能用spring security中的角色权限。spring security中的角色一般也就几个,是固定死的。如果动态就得用数据直接实现。
    向当于角色能访问的模块要保存到数据库中,角色也保存于数据库中,分配权限时建立关系。
      

  7.   

    for wzchong007:
    没错,权限表和角色表都有的
    而且对应的关系表也有的
    没有使用spring security里已有的角色
    现在就是实现一个动态添加啊
    让新增的角色有权限去访问后台啊
    就是这个需求啊
    不要再去配置文件里面手动修改就OK
      

  8.   

    配置文件里要配置成一个角色,其有所有权限,只要用户登录了就可以给其这个Spring角色
    具体的哪个业务角色有哪个模块的访问权限,要自己在数据中关联。再到页面上自己控制权限。
      

  9.   

    有2中模式;
    一种是:
    user ,role, Permissions,
    另一种是:
    user,Permissions;
    ---------------------------------------------------------
    实体之间的关系都是manytomany的关系;
      

  10.   

    acegi就是spring security的前身啊。
    spring security做权限管理,是我非常不建议的。你可以看看这个帖子《spring security 优劣之我见》  http://www.javaeye.com/topic/364132权限管理,我建议你使用ralasafe。它是中间件,不是框架。所以使用起来非常容易,就像log4j那样,在需要的地方调用一下就可以了。与spring security相比,有这么一些优势:
    1,ralasafe的角色等是配置在数据库里面的,不是与代码写死的;
    2,ralasafe提供了图形化管理界面,不需要像spring security那样很多配置文件;
    3,ralasafe还可以深入数据级进行权限管理,省去很多开发代码,尤其是查询代码(DAO/SERVICE等代码)ralasafe网址: http://www.ralasafe.org/zh  开源免费的东东
      

  11.   

    非常感谢大家的关注
    我现在就需要一个java类来代替以前的配置文件里面的部分啊
    具体请看我11楼回复的