Spring Security权限管理相关配置加注解

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:security="http://www.springframework.org/schema/security"
       xmlns:beans="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/security
       http://www.springframework.org/schema/security/spring-security.xsd">

       <!--当有请求道来的时候,Spring Security框架开始检查要访问的资源是否有权访问,
       如果当前登录用户无权或者当前根本就没有用户登录,则Spring Securtiy 框架就自动产生一个 登录页面。-->
       <security:http security="none" pattern="/statics/**" />
       <security:http security="none" pattern="/public/**"/>
       <security:http security="none" pattern="/login*"/>
       <security:http security="none" pattern="/maxSessionError*"/>
       <security:http security="none" pattern="/forbidden*"/>
       <!--这表示,我们要保护应用程序中的所有URL,只有拥有 ROLE_USER角色的用户才能访问。-->
       <security:http use-expressions="true">
              <!--所有url都要被拦截然后进行判断-->
              <security:intercept-url pattern="/**" access="isAuthenticated()"/>
              <!-- 不过滤用户请求登陆url 、用户登陆失败跳转url 、用户登陆成功请求url-->

              <!-- 退出登录-->

              <!--对登录页面不进行拦截,加*的原因是此请求可以有参数-->
              <!--<security:intercept-url pattern="/test/" filters="none"></security:intercept-url>-->
              <!--<http>元素是 所有web相关的命名空间功能的上级元素。<intercept-url>元素定义了 pattern,用来匹配进入的请求URL,上面的表示拦截根,以及根子目录下的所有的路径。
              access属性定义了请求匹配了指定模式时的需求。使用默认的配置, 这个一般是一个逗号分隔的角色队列,一个用户中的一个必须被允许访问请求。 前缀“ROLE_”表示的是一个用户应该拥有的权限比对。-->
              <!--拦截所有的请求但是这个角色可以随意访问-->
              <!--对登录页面不进行拦截-->
              <!--<security:intercept-url pattern="/login.jsp*" filters="none"/>-->
              <!--&lt;!&ndash;管理员界面必须管理员才能登录&ndash;&gt;-->
              <!--<security:intercept-url pattern="/admin.jsp*" access="ROLE_ADMIN"/>-->
              <!--&lt;!&ndash;首页必须都能访问&ndash;&gt;-->
              <!--<security:intercept-url pattern="/index.jsp*" access="ROLE_ADMIN,ROLE_USE"/>-->
              <!--&lt;!&ndash;用户角色经过认证之后都可以访问&ndash;&gt;-->
              <!--<security:intercept-url pattern="/**" access="ROLE_USER"/>-->

              <security:form-login login-page="/login"
                                   default-target-url="/home"
                                   authentication-failure-url="/login"
                                   authentication-success-handler-ref="loginSuccessHandler"/>
              <!--登出成功处理-->
              <security:logout invalidate-session="true" delete-cookies="true" success-handler-ref="logoutSuccessHandler"/>
              <!--访问受限制-->
              <security:access-denied-handler error-page="/forbidden"/>
              <!--会话管理配置,登录失效-->
              <security:session-management session-fixation-protection="newSession" invalid-session-url="/sessionTimeOut.htm">
                     <!--配置单点登录,注意web.xml也要相应的配置监听器-->
                     <security:concurrency-control max-sessions="1" error-if-maximum-exceeded="false" expired-url="/maxSessionError.htm"/>
              </security:session-management>
              <!--增加一个filter但是不能修改默认的filter-->
              <security:custom-filter ref="myFilter" before="FILTER_SECURITY_INTERCEPTOR"/>
       </security:http>

       <!--配置认证管理:定义role_user-->
       <!--验证配置,认证管理器,实现用户认证的入口,主要实现UserDetailsService接口即可 -->
       <!--通过MyUserDetailService拿到用户信息后,authenticationManager对比用户的密码(即验证用户),然后这个AuthenticationProcessingFilter拦截器就过咯。-->
       <security:authentication-manager alias="authenticationManager">
              <!--如果用户名为user,密码为user的用户成功登录了,它的角色是ROLE_USER ,那么他可以访问规定的资源。-->
              <security:authentication-provider user-service-ref="userInfoProvider">
                     <!--密码采用md5加密方法,admin加密之后21232f297a57a5a743894a0e4a801fc3-->
                     <security:password-encoder hash="md5" base64="true"/>
                     <!--<security:user-service>-->
                            <!--<security:user name="user" password="21232f297a57a5a743894a0e4a801fc3" authorities="ROLE_USER" />-->
                     <!--</security:user-service>-->
              </security:authentication-provider>
       </security:authentication-manager>

       <!--一个自定义的filter,必须包含authenticationManager,accessDecisionManager,securityMetadataSource三个属性,我们的所有控制将在这三个类中实现-->
       <beans:bean id="myFilter" class="com.flx.base.filter.MyFilterSecurityInterceptor">
              <beans:property name="authenticationManager" ref="authenticationManager"/>
              <beans:property name="accessDecisionManager" ref="accessDecisionManager"/>
              <beans:property name="securityMetadataSource" ref="securityMetadataSource"/>
       </beans:bean>

       <!--在这个类中,你就可以从数据库中读入用户的密码,角色信息,是否锁定,账号是否过期等 -->
       <beans:bean id="userInfoProvider" class="com.flx.base.security.secuser.service.impl.UserInfoServiceImpl"/>

       <!--资源源数据定义,将所有的资源和权限对应关系建立起来,即定义某一资源可以被哪些角色访问 -->
       <beans:bean id="securityMetadataSource" class="com.flx.base.filter.MySecurityMetadataSource"/>

       <!--访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源 -->
       <beans:bean id="accessDecisionManager" class="com.flx.base.filter.MyAccessDesisionmanager"/>


       <!--登录成功-->
       <bean id="loginSuccessHandler" class="com.flx.base.handler.MyLoginSuccessHandler"/>
       <!--登出成功-->
       <bean id="logoutSuccessHandler" class="com.flx.base.handler.MyLogoutSuccessHandler"/>
       <!--登录失败-->
       <bean id="loginFailHandler" class="com.flx.base.handler.MyLoginFailHandler"/>

</beans>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花生糖葫芦侠

创作不易,请多多支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值