`
xiaoao808
  • 浏览: 43687 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring Security连接数据库查询实例

阅读更多

     经过若干天断断续续地研究,终于做出了第一个spring security的实例,真是艰难啊,配置太复杂了,若干个Bean之间存在着这样或那样的关系......

     下面给出我的小例子,主要是配置文件拉~~别的东西自己看源码吧!

Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- 过滤器链配置,其中filterInvocationDefinitionSource属性为配置过滤器的种类与先后顺序,注意,顺序不能配置错误哦 -->
    
<bean id="filterChainProxy"
        class
="org.springframework.security.util.FilterChainProxy">
        
<property name="filterInvocationDefinitionSource">
            
<value><![CDATA[
            CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
            PATTERN_TYPE_APACHE_ANT
            /**=httpSessionIntegrationFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterSecurityInterceptor
]]>
            
</value>
        
</property>
    
</bean>
    
<!-- 看看你是否已经登录了,如果登录了就略过下面的过滤器了,直接访问资源 -->
    
<bean id="httpSessionIntegrationFilter"
        class
="org.springframework.security.context.HttpSessionContextIntegrationFilter" />
    
<!-- 安全验证入口 -->
    
<bean id="authenticationEntryPoint"
        class
="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint">
        
<property name="loginFormUrl" value="/index.jsp" /><!--默认登录页面-->
        
<property name="forceHttps" value="true" /><!--使登录页面通过HTTPS安全地进行显示-->
    
</bean>
    
<!-- 身份验证过滤器,就是验证身份用的嘛 -->
    
<bean id="authenticationProcessingFilter"
        class
="org.springframework.security.ui.webapp.AuthenticationProcessingFilter">
        
<!-- 验证连接名称,对应表单的action -->
        
<property name="filterProcessesUrl"
            value
="/j_spring_security_check" />
            
<!-- 验证失败后去哪 -->
        
<property name="authenticationFailureUrl"
            value
="/index.jsp?error=1" />
            
<!-- 验证成功后去哪 -->
        
<property name="defaultTargetUrl"
            value
="/security/security.jsp" />
        
<!--依靠一个身份验证管理器来验证身份 其实这个才是干活的BEAN-->
        
<property name="authenticationManager"
            ref
="authenticationManager" />
    
</bean>
    
<!-- 用于处理登录失败异常和权限不足异常 -->
    
<bean id="exceptionTranslationFilter"
        class
="org.springframework.security.ui.ExceptionTranslationFilter">
        
<!--配置出现exception时跳转到登录页-->
        
<property name="authenticationEntryPoint"
            ref
="authenticationEntryPoint" />
        
<!--配置403(权限不足)错误后跳转的页面-->
        
<property name="accessDeniedHandler" ref="accessDeniedHandler" />
    
</bean>
    
<!-- 配置权限不足时跳转到的页面 -->
    
<bean id="accessDeniedHandler"
        class
="org.springframework.security.ui.AccessDeniedHandlerImpl">
        
<property name="errorPage" value="/error.jsp" />
    
</bean>
    
<!-- 安全拦截器,下面看看它是干嘛的 -->
    
<bean id="filterSecurityInterceptor"
        class
="org.springframework.security.intercept.web.FilterSecurityInterceptor">
        
<!-- 验证管理者 -->
        
<property name="authenticationManager"
            ref
="authenticationManager" />
        
<!-- 权限决定管理者,他手下的一帮人投票决定登录者是否有权访问该资源 -->
        
<property name="accessDecisionManager"
            ref
="accessDecisionManager" />
        
<!--受保护资源-->
        
<property name="objectDefinitionSource">
            
<!-- 下面表示/security/security.jsp需要ROLE_ADMIN权限才能访问 -->
            
<value><![CDATA[
                CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
                PATTERN_TYPE_APACHE_ANT
                /security/security.jsp=ROLE_ADMIN
]]>
            
</value>
        
</property>
    
</bean>
    
<!-- 验证管理者,他管理DAO验证提供者来验证 -->
    
<bean id="authenticationManager"
        class
="org.springframework.security.providers.ProviderManager">
        
<property name="providers">
            
<list>
                
<!-- DAO验证提供者,SPRING SECURITY支持各种验证,这里可以添加相应配置 -->
                
<ref local="daoAuthenticationProvider" />
            
</list>
        
</property>
    
</bean>
    
<!--  -->
    
<bean id="accessDecisionManager"
        class
="org.springframework.security.vote.AffirmativeBased">
        
<!-- 如果所有投票者都弃权则不让访问 -->
        
<property name="allowIfAllAbstainDecisions">
            
<value>false</value>
        
</property>
        
<!-- 参加投票的BEAN -->
        
<property name="decisionVoters">
            
<list>
                
<bean class="org.springframework.security.vote.RoleVoter">
                    
<!-- 权限的前缀 -->
                    
<property name="rolePrefix" value="ROLE_" />
                
</bean>
                
<bean class="org.springframework.security.vote.AuthenticatedVoter" />
            
</list>
        
</property>
    
</bean>
    
<!-- DAO验证提供者依靠userDetailsService获得一个userDetails实例,进而验证权限 -->
    
<bean id="daoAuthenticationProvider"
        class
="org.springframework.security.providers.dao.DaoAuthenticationProvider">
        
<!-- jdbcDaoImpl实现了userDetailsService接口 -->
        
<property name="userDetailsService">
            
<ref local="jdbcDaoImpl" />
        
</property>
    
</bean>
    
<bean id="jdbcDaoImpl"
        class
="org.springframework.security.userdetails.jdbc.JdbcDaoImpl">
        
<!-- 根据用户名获得用户名、密码、用户是否启用等信息 -->
        
<property name="usersByUsernameQuery">
            
<value>
                select username,password,enabled from user where
                username=?
            
</value>
        
</property>
        
<!-- 通过用户名获取用户权限 -->
        
<property name="authoritiesByUsernameQuery">
            
<value>
                select username,authority from authentication where
                username=?
            
</value>
        
</property>
        
<!-- DataSource,不用我说了吧 -->
        
<property name="dataSource">
            
<ref local="dataSource" />
        
</property>
    
</bean>
    
<bean id="dataSource"
        class
="org.apache.commons.dbcp.BasicDataSource">
        
<property name="driverClassName"
            value
="org.gjt.mm.mysql.Driver">
        
</property>
        
<property name="url" value="jdbc:mysql://localhost:3306/user">
        
</property>
        
<property name="username" value="root"></property>
        
<property name="password" value="hicc"></property>
    
</bean>
</beans>

 

这个是最简单的一个例子,配了141行,呼~~继续研究其深入功能,离成功越来越近了

ps.传说spring security2.0有了超级简单的配置方法,还没有学到手,努力ing

源码下载(需要自己添加spring和mysql的jar包)

分享到:
评论

相关推荐

    Spring Security 3连接数据库查询实例

    在本实例中,我们将深入探讨如何配置Spring Security 3以连接数据库并执行查询,以及其核心组件的工作原理。 首先,我们看到配置文件中的 `,这是Spring Security的核心组件之一,它负责定义过滤器链。`...

    Spring Security数据库认证实例(dao认证)

    **Spring Security数据库认证实例(dao认证)** Spring Security是一个强大且高度可定制的身份验证和访问控制框架,广泛用于Java企业级应用的安全管理。在数据库认证的场景中,Spring Security允许我们存储用户信息和...

    基本的spring mvc + spring security实现的登录(无数据库)

    在本项目中,我们主要探讨的是如何利用Spring MVC和Spring Security框架构建一个基本的无数据库登录系统。Spring MVC是Spring框架的一部分,用于处理Web应用程序的请求-响应模型,而Spring Security则是一个强大的...

    spring security 完整项目实例

    在Spring Security中,用户信息通常存储在一个持久化的数据源中,如数据库。通过UserDetailsService接口,我们可以自定义实现来加载用户信息。用户与角色之间的关系通常通过用户角色表来建立,而角色则赋予了用户...

    spring security3配置和使用实例+教程

    教程文档`教你使用_SpringSecurity_3.0_52页.pdf`会详细指导你如何一步步配置和使用Spring Security。它应该包含了配置文件的示例、如何集成到Spring应用中、如何创建自定义认证逻辑以及如何进行授权设置等内容。...

    Spring Security 安全实例-数据库简单应用(用户从数据库中获取)

    **Spring Security 安全实例-数据库简单应用** 在软件开发中,系统安全是至关重要的一个环节,特别是对于企业级应用来说。Spring Security 是一个强大的安全框架,它为Java应用程序提供了全面的安全管理解决方案。...

    一个比较好的spring security实例

    Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理。它提供了认证、授权和访问控制...通过对这个实例的深入学习和分析,我们可以更好地理解和掌握Spring Security的用法,为自己的项目提供安全保护。

    Spring Security 完整实例

    例如,可以创建一个名为`CustomUserDetailsService`的类,它连接到自定义的用户和角色表,查询用户信息,并将其转换为Spring Security的`UserDetails`对象。 **自定义登录页面** 默认的Spring Security登录页面是...

    SpringSecurity入门Demo实例

    在这个入门Demo实例中,我们将探讨如何配置和使用Spring Security来保护我们的Java应用。教程链接提及的CSDN博客文章提供了详细的步骤,指导我们逐步创建一个基本的Spring Security应用。 首先,我们需要在项目中...

    Spring Security3.1最新配置实例

    Spring Security提供了多种认证方式,如内存中的用户信息、数据库查询、LDAP服务器等。 2. **Authorization(授权)**:一旦用户被认证,授权阶段将决定他们可以访问哪些资源。这可以通过角色、权限或访问控制列表...

    Spring Security 安全实例-数据库应用(用户从数据库中获取) 2

    要从数据库中获取用户信息,我们需要配置Spring Security以连接到我们的数据库。这通常涉及到创建一个自定义的`UserDetailsService`实现,该接口用于加载用户信息。例如,我们可以创建一个名为`...

    SpringMVC+springAOP+spring security+Hibernate整合实例代码

    在这个整合实例中,Spring Security可能会配置用户登录、权限控制和URL访问过滤,以确保只有授权的用户能访问特定资源。 4. Hibernate:Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的...

    springsecurity3的进阶实例

    本篇文章将深入探讨SpringSecurity3的进阶实例,帮助开发者更好地理解和运用这个框架。 首先,SpringSecurity3的核心组件包括SecurityContextHolder、AuthenticationManager和AccessDecisionManager。...

    spring security框架经典实例

    综上所述,这个实例展示了Spring Security如何与Hibernate和MySQL协同工作,构建一个安全、高效、易于维护的合同审批系统。Spring Security负责用户认证和授权,Hibernate简化了数据访问,而MySQL提供了可靠的数据...

    spring整合security4.2完整实例

    在Spring 4.3.18版本中,它与Spring Security 4.2.7进行了集成,构建了一个完整的项目实例,旨在帮助开发者理解如何在实际开发环境中配置和使用Spring Security。 在Spring Security 4.2中,主要包含以下几个核心...

    Spring Security3.1实例

    在"Spring Security3.1实例"中,我们主要关注以下几个核心知识点: 1. **认证**:Spring Security 提供了多种认证机制,如基于内存的、基于数据库的用户信息存储。在这个实例中,用户信息和角色信息存储在数据库中...

    Spring boot 和Spring Security4最新整合实例.docx

    Spring Boot 与 Spring Security 4 最新整合实例 Spring Boot 和 Spring Security 4 最新整合实例是一篇详细的教程,旨在指导用户如何使用 Spring Boot 和 Spring Security 4 实现用户身份认证、登录退出、用户...

    Spring Security 3.1 配置实例,有URL 方法拦截,都存数据库 maven

    **Spring Security 3.1配置实例** Spring Security是一款强大的安全框架,用于保护基于Java的Web应用程序。在3.1版本中,它提供了丰富的功能来管理应用程序的安全性,包括URL访问控制、用户认证、授权以及方法级别...

    spring security实现动态授权

    首先,我们需要配置Spring Security以使用数据库存储信息。这涉及到以下步骤: 1. **数据模型设计**:创建`User`、`Role`和`Permission`实体类,`User`与`Role`多对多关联,`Role`与`Permission`多对多关联。 2. *...

    spring security数据库表结构实例代码

    Spring Security 数据库表结构实例代码 Spring Security 是一个基于 Java 的安全框架,它提供了强大的身份验证、授权和访问控制机制。在本文中,我们将介绍 Spring Security 数据库表结构实例代码,帮助开发者快速...

Global site tag (gtag.js) - Google Analytics