论坛首页 Java企业应用论坛

帮Spring security一个忙:为Struts2 写个Plugin对Action进行权限控制

浏览 21801 次
精华帖 (0) :: 良好帖 (7) :: 新手帖 (10) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-10  
phz50 写道
呵呵,看来大家对我搞的这个东西,骂声一片啊,当然大家很多建议,都说得很好,非常感谢了,不过本人想再次说明做这个东东有很大娱乐成分喔,实际项目上不一定要采用的啊,这个东西可插拔噢!

和他们说 不服?不服你也去写个
0 请登录后投票
   发表时间:2009-06-10  
phz50 写道
呵呵,看来大家对我搞的这个东西,骂声一片啊,当然大家很多建议,都说得很好,非常感谢了,不过本人想再次说明做这个东东有很大娱乐成分喔,实际项目上不一定要采用的啊,这个东西可插拔噢!

没有骂声一片,只是指出了局限性。
但是做个小东西,还是不错的。我也曾经这么用过,呵呵
0 请登录后投票
   发表时间:2009-06-10  
很好 很强大的
0 请登录后投票
   发表时间:2009-06-10  
phz50 写道
cris_jxg 写道
spring针对url的保护不就是针对action的保护吗,有这必要在搞一遍注释?

提的很好,不过,一个Action可以针对不同Url,而且Url是可能经常修改的,一旦修改了,就要修改它保护的配置了,维护起来很麻烦,特别是当Url较多时,而针对Action本身注解,一旦更改了Action或Url不用修改其它,维护起来比较方便和直观。当然也可以一起使用它们,并不冲突的。


目前struts2提供的机制可以一个url对一个action的方法,简单点的话actionName!method.action就够了,没觉得url经常修改,spring提供ant语法的对url的拦截,明显比annotation要灵活。
0 请登录后投票
   发表时间:2009-06-10  
url是不会变的,权限是会变的,应该把权限写入数据库,用spring security的web url进行过滤,这样比较合理,一般项目足够了。
0 请登录后投票
   发表时间:2009-06-10  
看到大家的关注,非常开心,不论说好的,说孬的,都非常感谢,做这个东西,并不是想用来说明Spring security 本身提供的机制不好,而是想提供另一种权限控制思路罢了,当然个人也觉得这种思路,有点不切实际啊,呵呵,一定没有把权限写到数据库好,这是很明显的啊,呵呵,纯属娱乐啦,
0 请登录后投票
   发表时间:2009-06-10  
贴一个ss完整的Demo:
<beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:beans="http://www.springframework.org/schema/beans"
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
              http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.1.xsd">

    <http auto-config="true" lowercase-comparisons="false">
        <!--intercept-url pattern="/images/*" filters="none"/>
        <intercept-url pattern="/styles/*" filters="none"/>
        <intercept-url pattern="/scripts/*" filters="none"/-->
        <intercept-url pattern="/admin/*" access="ROLE_ADMIN"/>
        <intercept-url pattern="/passwordHint.html*" access="ROLE_ANONYMOUS,ROLE_ADMIN,ROLE_USER"/>
        <intercept-url pattern="/signup.html*" access="ROLE_ANONYMOUS,ROLE_ADMIN,ROLE_USER"/>
        <intercept-url pattern="/a4j.res/*.html*" access="ROLE_ANONYMOUS,ROLE_ADMIN,ROLE_USER"/>
        <!-- APF-737, OK to remove line below if you're not using JSF -->
        <intercept-url pattern="/**/*.html*" access="ROLE_ADMIN,ROLE_USER"/>
        <form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=true" login-processing-url="/j_security_check"/>
        <remember-me user-service-ref="userDao" key="e37f4b31-0c45-11dd-bd0b-0800200c9a66"/>
    </http>

    <authentication-provider user-service-ref="userDao">
        <password-encoder ref="passwordEncoder"/>
    </authentication-provider>

    <!-- Override the default password-encoder (SHA) by uncommenting the following and changing the class -->
    <!-- <bean id="passwordEncoder" class="org.springframework.security.providers.encoding.ShaPasswordEncoder"/> -->

    <global-method-security>
        <protect-pointcut expression="execution(* *..service.UserManager.getUsers(..))" access="ROLE_ADMIN"/>
        <protect-pointcut expression="execution(* *..service.UserManager.removeUser(..))" access="ROLE_ADMIN"/>
    </global-method-security>
</beans:beans>


注意:
    <global-method-security>
        <protect-pointcut expression="execution(* *..service.UserManager.getUsers(..))" access="ROLE_ADMIN"/>
        <protect-pointcut expression="execution(* *..service.UserManager.removeUser(..))" access="ROLE_ADMIN"/>
    </global-method-security>
这个是不是你现在"发明"的轮子?
0 请登录后投票
   发表时间:2009-06-10   最后修改:2009-06-10
引用
注意:
    <global-method-security>
        <protect-pointcut expression="execution(* *..service.UserManager.getUsers(..))" access="ROLE_ADMIN"/>
        <protect-pointcut expression="execution(* *..service.UserManager.removeUser(..))" access="ROLE_ADMIN"/>
    </global-method-security>
这个是不是你现在"发明"的轮子?

谢谢你的提问,可能大家也有同样的疑问喔,其实,这个是对领域或服务方法保护啊,Spring Security是完全能做到的啊,我这个想到达对Action保护,如果你觉得也都一样的话,麻烦你先试一下,原因我在这篇文章中也有说明的啊,谢谢

还有如果大家对Struts2运行机制不是很了解的话,推荐大家看看我的另一篇文章哦自己动手写一个Struts2(升级版),呵呵,很久以前写的,都没人看,打一下广告。。。
0 请登录后投票
   发表时间:2009-06-10  
发现LZ的头像很可爱,难道是个女性朋友不成?
0 请登录后投票
   发表时间:2009-06-10  
treblesoftware 写道
发现LZ的头像很可爱,难道是个女性朋友不成?

呵呵,让你失望了,光棍男,呵呵
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics