- 浏览: 43716 次
- 性别:
- 来自: 北京
最新评论
-
yxl2005play:
不支持多个文件(多个<input type=" ...
JAVA上传文件进度条的实现 -
clarck_913:
您好,我看了你附件里的代码
有点疑问。
第一,web.xm ...
JAVA上传文件进度条的实现
经过若干天断断续续地研究,终于做出了第一个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>
<!--<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
发表评论
-
Hibernate主键生成方式(转)
2008-01-29 22:05 5421) assigned 主键由外部程序负责生成,无需Hibe ... -
实现JSP页面自动跳转
2008-01-30 22:01 838HTML里增加: <meta http-e ... -
JAVA中的接口和抽象类(转)
2008-03-11 17:31 651在面向对象的概念中, ... -
JAVA错误处理大集合
2008-03-15 17:19 7700、 需要标识符 a) 不在 ... -
强!!!
2008-04-01 17:51 688Java视频教程 孙鑫Java无难事 (全12CD) http ... -
字符转换 dos 命令 JDK自带的native2ascii工具完全揭密
2008-07-14 17:27 854背景:在做Java开发的时 ... -
Acegi安全系统的配置
2008-07-17 00:42 683Acegi 的配置看起来非常复杂,但事实上在实际项目的安全应用 ... -
ACEGI配置总结(1)
2008-07-18 18:39 731Acegi配置总结 1、 在web.xml中配置conte ... -
关于Struts处理异常框架的小例子
2008-07-30 17:15 750下午搞了一下Struts处理异常的框架,不错,确实很 ... -
利用commons upload+ffmpeg+mencoder完成视频的上传与转换
2008-07-31 16:41 701前一段时间朱哥一直在搞视频转换这个东东,我也一直很有 ... -
关于Struts的Token
2008-08-01 12:07 682请求有效性处理,使用令牌可以有效的防止重复提交。 protec ... -
六大代码问题检验你的JAVA知识(转)
2008-08-01 15:57 734你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了J ... -
JAVA md5、SHA加密类
2008-08-04 20:25 863Code<!--<br /><br ... -
Hibernate获取数据方式与缓存使用
2008-08-16 11:03 671Hibernate获取数据的方式有不同的几种,其与缓存结合使用 ... -
使用AjaxTags实现自动完成
2008-09-22 09:42 1121最近搞的一个通讯录想要加一个Ajax的自动完成功能, ... -
Struts2&Jquery 新闻发布
2009-03-16 17:48 1009又一个新闻发布......比以前的更加人性化了,用到了Stru ... -
JAVA实现精确的加减乘除
2009-05-20 17:13 1130package lc.util; import java.ma ... -
JAVA上传文件进度条的实现
2009-08-03 19:46 5197很久不在这里发帖子了,最近在家闲来无事,想到转视频的那东西又要 ... -
利用commonsfileupload+ffmpeg+mencoder完成视频的上传与转换(2)
2009-08-04 17:45 955这两天完善了一下视频 ... -
利用commons upload+ffmpeg+mencoder完成视频的上传与转换
2008-07-31 16:41 917前一段时间朱哥一直在搞视频转换这个东东,我也一直很有 ...
相关推荐
在本实例中,我们将深入探讨如何配置Spring Security 3以连接数据库并执行查询,以及其核心组件的工作原理。 首先,我们看到配置文件中的 `,这是Spring Security的核心组件之一,它负责定义过滤器链。`...
**Spring Security数据库认证实例(dao认证)** Spring Security是一个强大且高度可定制的身份验证和访问控制框架,广泛用于Java企业级应用的安全管理。在数据库认证的场景中,Spring Security允许我们存储用户信息和...
在本项目中,我们主要探讨的是如何利用Spring MVC和Spring Security框架构建一个基本的无数据库登录系统。Spring MVC是Spring框架的一部分,用于处理Web应用程序的请求-响应模型,而Spring Security则是一个强大的...
在Spring Security中,用户信息通常存储在一个持久化的数据源中,如数据库。通过UserDetailsService接口,我们可以自定义实现来加载用户信息。用户与角色之间的关系通常通过用户角色表来建立,而角色则赋予了用户...
教程文档`教你使用_SpringSecurity_3.0_52页.pdf`会详细指导你如何一步步配置和使用Spring Security。它应该包含了配置文件的示例、如何集成到Spring应用中、如何创建自定义认证逻辑以及如何进行授权设置等内容。...
**Spring Security 安全实例-数据库简单应用** 在软件开发中,系统安全是至关重要的一个环节,特别是对于企业级应用来说。Spring Security 是一个强大的安全框架,它为Java应用程序提供了全面的安全管理解决方案。...
Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理。它提供了认证、授权和访问控制...通过对这个实例的深入学习和分析,我们可以更好地理解和掌握Spring Security的用法,为自己的项目提供安全保护。
例如,可以创建一个名为`CustomUserDetailsService`的类,它连接到自定义的用户和角色表,查询用户信息,并将其转换为Spring Security的`UserDetails`对象。 **自定义登录页面** 默认的Spring Security登录页面是...
在这个入门Demo实例中,我们将探讨如何配置和使用Spring Security来保护我们的Java应用。教程链接提及的CSDN博客文章提供了详细的步骤,指导我们逐步创建一个基本的Spring Security应用。 首先,我们需要在项目中...
Spring Security提供了多种认证方式,如内存中的用户信息、数据库查询、LDAP服务器等。 2. **Authorization(授权)**:一旦用户被认证,授权阶段将决定他们可以访问哪些资源。这可以通过角色、权限或访问控制列表...
要从数据库中获取用户信息,我们需要配置Spring Security以连接到我们的数据库。这通常涉及到创建一个自定义的`UserDetailsService`实现,该接口用于加载用户信息。例如,我们可以创建一个名为`...
在这个整合实例中,Spring Security可能会配置用户登录、权限控制和URL访问过滤,以确保只有授权的用户能访问特定资源。 4. Hibernate:Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的...
本篇文章将深入探讨SpringSecurity3的进阶实例,帮助开发者更好地理解和运用这个框架。 首先,SpringSecurity3的核心组件包括SecurityContextHolder、AuthenticationManager和AccessDecisionManager。...
综上所述,这个实例展示了Spring Security如何与Hibernate和MySQL协同工作,构建一个安全、高效、易于维护的合同审批系统。Spring Security负责用户认证和授权,Hibernate简化了数据访问,而MySQL提供了可靠的数据...
在Spring 4.3.18版本中,它与Spring Security 4.2.7进行了集成,构建了一个完整的项目实例,旨在帮助开发者理解如何在实际开发环境中配置和使用Spring Security。 在Spring Security 4.2中,主要包含以下几个核心...
在"Spring Security3.1实例"中,我们主要关注以下几个核心知识点: 1. **认证**:Spring Security 提供了多种认证机制,如基于内存的、基于数据库的用户信息存储。在这个实例中,用户信息和角色信息存储在数据库中...
Spring Boot 与 Spring Security 4 最新整合实例 Spring Boot 和 Spring Security 4 最新整合实例是一篇详细的教程,旨在指导用户如何使用 Spring Boot 和 Spring Security 4 实现用户身份认证、登录退出、用户...
**Spring Security 3.1配置实例** Spring Security是一款强大的安全框架,用于保护基于Java的Web应用程序。在3.1版本中,它提供了丰富的功能来管理应用程序的安全性,包括URL访问控制、用户认证、授权以及方法级别...
首先,我们需要配置Spring Security以使用数据库存储信息。这涉及到以下步骤: 1. **数据模型设计**:创建`User`、`Role`和`Permission`实体类,`User`与`Role`多对多关联,`Role`与`Permission`多对多关联。 2. *...
Spring Security 数据库表结构实例代码 Spring Security 是一个基于 Java 的安全框架,它提供了强大的身份验证、授权和访问控制机制。在本文中,我们将介绍 Spring Security 数据库表结构实例代码,帮助开发者快速...