springSecurity安全框架配置详解

关于springSecurity的详细配置可以参考官网:Spring Security Reference

这里只对主要的常用配置做下简单的介绍,其实springSecurity的权限配置主要是围绕三个主题:

  1. 元数据配置(安全拦截目录配置),对应的接口:FilterInvocationSecurityMetadataSource
  2. 权限判断配置,对应的接口:AccessDecisionManager
  3. 用户信息鉴权,对应的接口:UserDetailsService

下面介绍下springSecurity主要的两个配置命名空间:<http>和<authentication-manager>
  • 登陆/退出登陆,<http>的子节点
    <security:form-login login-page="/login.jsp" login-processing-url="/login" default-target-url="/main" 
        		username-parameter="uname" password-parameter="pwd" />
        	<security:logout logout-url="/logout" logout-success-url="/login.jsp"/>
    其中要注意的一点是login-processing-url的配置指向的地址不能对应项目中的struts或者springMVC配置的地址,这个地址是处理登陆请求的专用地址;
  • 配置同一个用户只允许同时登陆一个客户端,<http>的子节点
    <listener>
    		<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
    	</listener>

    <security:session-management invalid-session-url="/login.jsp">
        		<security:concurrency-control max-sessions="1"></security:concurrency-control>
        	</security:session-management>
    这两处配置缺一不可
  • 配置url对应的权限
    <security:intercept-url pattern="/login.jsp" access="permitAll" />
        	<security:intercept-url pattern="/user/list" access="hasAuthority('USER')" />
        	<security:intercept-url pattern="/admin/list" access="hasAuthority('ADMIN')"/>

  • <pre name="code" class="html">
     其中access可以配置表达式如下:
该配置可以使用<http access-decision-manager-ref="accessDecisionImpl">中accessDecisionImpl对应的实现来代替(第二个接口实现)

  • <authentication-manager>的配置
     <security:authentication-manager>
        	<!--2,使用userDetailService来模拟测试数据-->
        	<security:authentication-provider user-service-ref="userService">
        		<!--1,模拟测试数据 -->
        		<!-- 
    			<security:user-service>
    				<security:user name="aaa" authorities="USER,ADMIN" password="123456" />
    				<security:user name="bbb" authorities="USER" password="123456"/>
    			</security:user-service>
    			 -->
        	</security:authentication-provider>
        </security:authentication-manager>  
    该配置主要是指定第三个接口的实现,用来提供登录用户的信息,包括该用户所拥有的权限
  • 自定义拦截器,<http>的子节点
     <security:custom-filter ref="cusFilter" position="PRE_AUTH_FILTER"/>
    其中position也可以使用before和after代替,position的可选值如下:
其中cusFilter的实现实例如下:
 <bean id="cusFilter" class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
        
        <property name="authenticationManager" ref="authenticationManager"/>
        
        <property name="accessDecisionManager" ref="accessDecisionManager" />
        
        <property name="securityMetadataSource" ref="securityMetadataSource"/>
    </bean>
authenticationManager对应上面的<authentication-manager>配置





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值