Spring Security(Spring安全框架)入门理解

          Security 使用场景:不同用户不同操作。如:企业员工管理系统。

          Spring Security 框架,完全基于servlet过滤器标准,这个框架内部没有使用任何框架做基础,他只是管理HttpServletRequest和HttpServletResponse,不用关心请求来之什么浏览器或者Ajax。Security 已启动就包含一批负责安全管理的过滤器。

          Web 应用的安全性包括用户认证和用户授权两部分,用户验证指的是可不可以访问本系统,需要提供账号密码,由系统来完成这个认证。用户授权指的是用户是否有权利执行某个操作。

          下面使用的是 spring restful + My batis

          添加一个过滤器,放到其它过滤器前面。Security 使用的是Servlet规范中标准的过滤器机制。过滤器是链条的方式来过滤。

    <filter>  
        <filter-name>springSecurityFilterChain</filter-name>  
        <filter-class>  
            org.springframework.web.filter.DelegatingFilterProxy   
        </filter-class>  
    </filter>
    <filter-mapping>  
        <filter-name>springSecurityFilterChain</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>
        

          用户相关信息通过UserDetailsService 接口来加载的,该接口有一个唯一方法loadUserByUsername 用来加载相关信息,返回类型UserDetails。(Spring提供的有JdbcDaoImpl类来支持从数据库中加载用户信息,开发人员需要该类兼容的数据库表结构,就不需要任何改动,而直接使用该类) 我们用My Batis 连接数据库。

         

<bean id="configBean" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:database.properties</value>
			</list>
		</property>
	</bean> 
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName" value="${driver}" />
		<property name="url"
			value="${url}" />
		<property name="username" value="${username}" />
		<property name="password" value="${password}" />
	</bean>  
	<context:annotation-config />
	<context:component-scan base-package="com.*" />
	<tx:annotation-driven />
		
	<!-- 事务管理器 -->
	 <bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>  

	<!-- 创建SqlSessionFactory -->
	  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="classpath:mybatis-config.xml"/> 
		<property name="typeAliasesPackage" value="com.entity" /> 
		<property name="mapperLocations" value="classpath*:com/mapper/*.xml"/> 
	</bean> 
	
	<!-- 自动扫描映射器 -->
	 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.mapper" />
	</bean>
	  
	<!-- 注入 -->
	  <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg index="0" ref="sqlSessionFactory" />
		<constructor-arg index="1" value="BATCH" /> 
	</bean> 

          配置URL模式访问权(Spring Security 2.0 和 3.0 配置有些差别,你需要注意)

        <security:intercept-url pattern="/hello*" access="hasRole('ROLE_ADMIN','ROLE_USER')"/>
	<security:intercept-url pattern="/auth/login" access="permitAll"/>
	<security:intercept-url pattern="/main/admin" access="hasRole('ROLE_ADMIN')"/>
	<security:intercept-url pattern="/main/common" access="hasRole('ROLE_USER')"/>
          hashRole这种格式 3.0以后有的,ROLE_* 这种验证时规定好的,后面的 用户名,你需要在方法中定义
         

          上面说那么多主要就是脑袋里有个概念,下面是 案例,和 入门文档

          http://download.csdn.net/detail/uniquelike/7633989

         

         

         

         


猜你喜欢

转载自blog.csdn.net/Uniquelike/article/details/37765303