Spring Security 标签使用

  1. 5:完善web页面验证规则
  2. Java代码
  1. <http auto-config="true">  
  2. <intercept-url pattern="/js/**" filters="none"/>  
  3. <intercept-url pattern="/css/**" filters="none"/>  
  4. <intercept-url pattern="/images/**" filters="none"/>  
  5. <intercept-url pattern="/a.jsp" access="ROLE_A" />  
  6. <intercept-url pattern="/b.jsp" access="ROLE_B" />  
  7. <intercept-url pattern="/c.jsp" access="ROLE_A, ROLE_B" />  
  8. <intercept-url pattern="/**" access="ROLE_USER" />  
  9. </http>  
  1. <http auto-config="true"> <intercept-url pattern="/js/**" filters="none"/> <intercept-url pattern="/css/**" filters="none"/> <intercept-url pattern="/images/**" filters="none"/> <intercept-url pattern="/a.jsp" access="ROLE_A" /> <intercept-url pattern="/b.jsp" access="ROLE_B" /> <intercept-url pattern="/c.jsp" access="ROLE_A, ROLE_B" /> <intercept-url pattern="/**" access="ROLE_USER" /> </http>
  1. 6:自定义验证配置
  2. Java代码
  1. <!-- 指 定登陆页面、成功页面、失败页面-->  
  2. <form-login login-page="/login.jsp" default-target-url="/index.jsp" authentication-failure-url="/login.jsp" />  
  3. <!-- 尝 试访问没有权限的页面时跳转的页面 -->  
  4. <access-denied-handler error-page="/accessDenied.jsp"/>  
  5. <!-- 使 用记住用户名、密码功能,指定数据源和加密的key -->  
  6. <remember-me data-source-ref="dataSource" />  
  7. <!-- logout 页面,logout后清除session -->  
  8. <logout invalidate-session="true" logout-success-url="/login.jsp" />  
  9. <!-- session 失 效后跳转的页面,最大登陆次数 -->  
  10. <session-management invalid-session-url="/sessionTimeout.htm">  
  11. <concurrency-control max-sessions="1" expired-url="/sessionTimeout.htm" />  
  12. </session-management>  
  13. </http>  
  14. 可 以使用SS自带的登陆页面作为login.jsp的模板  
  1. <http auto-config="true"> <!-- 指定登陆页面、成功页面、失败页面--> <form-login login-page="/login.jsp" default-target-url="/index.jsp" authentication-failure-url="/login.jsp" /> <!-- 尝试访问没有权限的页面时跳转的页面 --> <access-denied-handler error-page="/accessDenied.jsp"/> <!-- 使用记住用户名、密码功能,指定数据源和加密的key --> <remember-me data-source-ref="dataSource" /> <!-- logout页面,logout后清除session --> <logout invalidate-session="true" logout-success-url="/login.jsp" /> <!-- session 失效后跳转的页面,最大登陆次数 --> <session-management invalid-session-url="/sessionTimeout.htm"> <concurrency-control max-sessions="1" expired-url="/sessionTimeout.htm" /> </session-management> </http> 可以使用SS自带的登陆页面作为login.jsp的模板
  1. 7:本地化消息输出
    拷贝本地化资源文件后,在配置文件中加载该文件:
  2. Java代码
  1. <!-- 加 载错误信息资源文件 -->  
  2. <beans:bean id="messageSource"   
  3. class="org.springframework.context.support.ReloadableResourceBundleMessageSource">  
  4. <beans:property name="basename" value="classpath:messages"/>  
  5. </beans:bean>  
  6. 资 源文件在SS核心包:spring-security-core-3.0.2.RELEASE.jar的orgspringframeworksecurity目录 中  
  1. <!-- 加载错误信息资源文件 --> <beans:bean id="messageSource"  class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <beans:property name="basename" value="classpath:messages"/> </beans:bean> 资源文件在SS核心包:spring-security-core-3.0.2.RELEASE.jar的orgspringframeworksecurity目录中
  1. 8:在web页面中获取用户信息
  2. Java代码
  1. 方式 一:Java代码  
  2. Authentication auth = SecurityContextHolder.getContext().getAuthentication();  
  3. Collection<GrantedAuthority> col = auth.getAuthorities();  
  4. 方 式二:标签库  
  5. <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>  
  6. <sec:authentication property="name“/>  
  7. <sec:authentication property="authorities“/>  
  1. 方式一:Java代码 Authentication auth = SecurityContextHolder.getContext().getAuthentication(); Collection<GrantedAuthority> col = auth.getAuthorities(); 方式二:标签库 <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %> <sec:authentication property="name“/> <sec:authentication property="authorities“/>
  1. 9:在web页面进行元素安全控制
  2. Java代码
  1. 方式一  
  2. <sec:authorizeifAnyGranted="ROLE_A">  
  3. <a href="a.jsp">你可以访问a.jsp</a>  
  4. </sec:authorize>  
  5. <sec:authorizeifNotGranted="ROLE_A">  
  6. 你 不可以访问a.jsp  
  7. </sec:authorize>  
  8. 方 式二  
  9. <sec:authorizeurl="/a.jsp">  
  10. <a href="a.jsp">你可以访问a.jsp</a>  
  11. </sec:authorize>  
  1. 方式一 <sec:authorizeifAnyGranted="ROLE_A"> <a href="a.jsp">你可以访问a.jsp</a> </sec:authorize> <sec:authorizeifNotGranted="ROLE_A"> 你不可以访问a.jsp </sec:authorize> 方式二 <sec:authorizeurl="/a.jsp"> <a href="a.jsp">你可以访问a.jsp</a> </sec:authorize>
  1. 10:全局方法安全控制
  2. Java代码
  1. <global-method-security pre-post-annotations="enabled">  
  2. <protect-pointcut expression="execution(* com.xasxt.*Service.add*(..))" access="ROLE_A"/>  
  3. <protect-pointcut expression="execution(* com.xasxt.*Service.delete*(..))" access="ROLE_B"/>  
  4. </global-method-security>  
  5. 此 处使用了AspectJ中常用的切入点表达式(百度:AspectJ execution)  
  1. <global-method-security pre-post-annotations="enabled"> <protect-pointcut expression="execution(* com.xasxt.*Service.add*(..))" access="ROLE_A"/> <protect-pointcut expression="execution(* com.xasxt.*Service.delete*(..))" access="ROLE_B"/> </global-method-security> 此处使用了AspectJ中常用的切入点表达式(百度:AspectJ execution)
  1. 11:使用注解进行方法安全控制
  2. Java代码
  1. public class DemoService {  
  2. @PreAuthorize("hasRole(&apos;ROLE_A&apos;)")  
  3. public void methodA() {  
  4. }  
  5. @PreAuthorize("hasAnyRole(&apos;ROLE_A, ROLE_B&apos;)")  
  6. public void methodB() {  
  7. }  
  8. }  
  9. hasRole 与hasAnyRole为SS通用内置表达式(google : spring security Common Built- In Expressions) 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值