您的位置:首页 > 编程语言 > Java开发

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

2014-07-14 18:10 267 查看
          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
         

         

         

         
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息