`
jianlai2007
  • 浏览: 8667 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类
最新评论

spring security3.0配置

阅读更多
spring-security3 配置和使用.

最近项目中要使用到spring-security,闲来没事就研究了下。发现入门挺简单的,在这里把自己的心得发下,希望对没有接触过想接触的朋友有帮助。

1、在spring-security官网下载最新jar然后拷贝jar到项目的lib下。
2、在classpath下添加security配置文件,例如applicationContext-security.xml.网上现在大多都是2.0的schema. 要根据自己使用的版本而定.下面是3.0的schema.
Xml代码 复制代码

    <?xml version="1.0" encoding="UTF-8"?> 
     <beans:beans xmlns="http://www.springframework.org/schema/security" 
        xmlns:beans="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-3.0.xsd  
        http://www.springframework.org/schema/security  
        http://www.springframework.org/schema/security/spring-security-3.0.xsd"> 
     
     </beans:beans> 

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="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-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd">

</beans:beans>


3、然后在web.xml中添加配置,内容如下:
Xml代码 复制代码

    <!-- spring security  --> 
            <context-param> 
            <param-name>contextConfigLocation</param-name> 
            <param-value> 
                classpath*:/applicationContext*.xml  
            </param-value> 
        </context-param> 
     
        <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> 
        <listener> 
            <listener-class> 
                org.springframework.web.context.ContextLoaderListener  
            </listener-class> 
        </listener> 

<!-- spring security  -->
        <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/applicationContext*.xml
</param-value>
</context-param>

<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>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>



配置起来很简单,由于我的security是整合到现有项目中的.一些jar可能已经存在. 单独做demo的朋友配置的时候可能会出现问题.

本想分开发挣点积分..但怕大家看起来累.. 就发到一起吧.. (*^__^*)

使用篇

1、建立login.jsp页面.内容如下:
Html代码 复制代码

    <form action="<%=path %>/j_spring_security_check" method="post"> 
            USERNAME:<input type="text" name="j_username" value="${sessionScope['SPRING_SECURITY_LAST_USERNAME']}" /><br/> 
            PASSWORD:<input type="password" name="j_password" value="" /><br/> 
            <input type="checkbox" name="_spring_security_remember_me" />两周之内不必登陆<br/> 
            <input type="submit">       
        </form> 

<form action="<%=path %>/j_spring_security_check" method="post">
    USERNAME:<input type="text" name="j_username" value="${sessionScope['SPRING_SECURITY_LAST_USERNAME']}" /><br/>
    PASSWORD:<input type="password" name="j_password" value="" /><br/>
    <input type="checkbox" name="_spring_security_remember_me" />两周之内不必登陆<br/>
<input type="submit">   
    </form>



j_spring_security_check : 为security验证中心(不知道怎么说合适.暂时这么理解吧..).
j_username: 验证用户名;
j_password: 验证密码;
${sessionScope['SPRING_SECURITY_LAST_USERNAME']}:使用最后一次登录用户名.
_spring_security_remember_me:记住我...

2、xml配置,配置内容如下:
Xml代码 复制代码

    <?xml version="1.0" encoding="UTF-8"?> 
     <beans:beans xmlns="http://www.springframework.org/schema/security" 
        xmlns:beans="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-3.0.xsd  
        http://www.springframework.org/schema/security  
        http://www.springframework.org/schema/security/spring-security-3.0.xsd"> 
     
        <!-- auto-config = true 则使用from-login. 如果不使用该属性 则默认为http-basic(没有session).   
            access-denied-page:出错后跳转到的错误页面;  
        --> 
        <http auto-config="true" access-denied-page="/common/403.jsp"> 
            <!-- intercept-url:拦截器,可以设定哪些路径需要哪些权限来访问. filters=none 不使用过滤,也可以理解为忽略 --> 
            <intercept-url pattern="/index.jsp" access="ROLE_USER" /> 
            <intercept-url pattern="/login.jsp" filters="none" /> 
            <intercept-url pattern="/common/**" filters="none" /> 
            <intercept-url pattern="/script/**" filters="none" /> 
            <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" /> 
            <intercept-url pattern="/user.jsp" access="ROLE_USER" /> 
              
            <!-- session-management是针对session的管理. 这里可以不配置. 如有需求可以配置. --> 
            <!-- id登陆唯一. 后登陆的账号会挤掉第一次登陆的账号  error-if-maximum-exceeded="true" 禁止2次登陆;  
                session-fixation-protection="none" 防止伪造sessionid攻击. 用户登录成功后会销毁用户当前的session.  
                创建新的session,并把用户信息复制到新session中.  
             --> 
            <session-management session-fixation-protection="none"> 
                <concurrency-control/> 
            </session-management> 
              
            <!-- login-page:默认指定的登录页面. authentication-failure-url:出错后跳转页面. default-target-url:成功登陆后跳转页面 --> 
            <form-login login-page="/login.jsp" 
                authentication-failure-url="/common/403.jsp" 
                default-target-url="/admin.jsp" /> 
            <!-- logout-success-url:成功注销后跳转到的页面; --> 
            <logout logout-success-url="/login.jsp"/> 
            <http-basic /> 
              
        </http> 
     
        <!--   
        连接池.我spring配置文件中配的有.所以这里就注掉了.  
        <beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">   
            <beans:property name="driverClassName" value="com.mysql.jdbc.Driver"/>   
            <beans:property name="url" value="jdbc:mysql://localhost/demo"/>   
            <beans:property name="username" value="root"/>   
            <beans:property name="password" value="root"/>   
        </beans:bean>   
         --> 
     
        <!-- 权限管理操作 --> 
        <authentication-manager> 
            <authentication-provider> 
                <!--   
                密码加密方式. 常用的有md5 和 sha.   
                salt-source:忘记了.. 手头api关了,网速卡就不上网查了. 类似在md5上又加了一层. 放置暴力破解. 追加安全性.  
                <password-encoder hash="md5"> 
                    <salt-source user-property="username"/> 
                </password-encoder> 
                 --> 
                 <!-- 注入dataSource验证数据库中的用户名.密码.账号状态.和权限相关; --> 
                <jdbc-user-service data-source-ref="dataSource" 
                    users-by-username-query="select username,password,enabled from user where username = ? and enabled = 1" 
                    authorities-by-username-query="select u.username,r.name from user u join user_role ur on u.uid = ur.uid join role r on r.rid = ur.rid where u.username = ?" /> 
                <!--  
                    使用固定的用户名和密码及权限来做验证.   
                    <user-service> 
                    <user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" /> 
                    <user name="user" password="user" authorities="ROLE_USER" /> 
                    </user-service> 
                --> 
            </authentication-provider> 
        </authentication-manager> 
        <!--  
            <beans:bean id="userDetailsServiceImpl" class="com.demo.test.service.impl.UserDetailsServiceImpl" /> 
        --> 
          
        <!--   
            此配置只是自己学习的一个小demo. 数据库也建的比较随意 比较简单. 使用的是角色权限. 个人比较推荐组权限来控制.. (由于工作经验限制,此处为个人理解)  
            我的库如下:  
            user:username\password\enabled  
            role:name\desc  
            user_role:uid\rid  
         --> 
    </beans:beans> 

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="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-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd">

<!-- auto-config = true 则使用from-login. 如果不使用该属性 则默认为http-basic(没有session).
access-denied-page:出错后跳转到的错误页面;
-->
<http auto-config="true" access-denied-page="/common/403.jsp">
<!-- intercept-url:拦截器,可以设定哪些路径需要哪些权限来访问. filters=none 不使用过滤,也可以理解为忽略 -->
<intercept-url pattern="/index.jsp" access="ROLE_USER" />
<intercept-url pattern="/login.jsp" filters="none" />
<intercept-url pattern="/common/**" filters="none" />
<intercept-url pattern="/script/**" filters="none" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/user.jsp" access="ROLE_USER" />

<!-- session-management是针对session的管理. 这里可以不配置. 如有需求可以配置. -->
<!-- id登陆唯一. 后登陆的账号会挤掉第一次登陆的账号  error-if-maximum-exceeded="true" 禁止2次登陆;
session-fixation-protection="none" 防止伪造sessionid攻击. 用户登录成功后会销毁用户当前的session.
创建新的session,并把用户信息复制到新session中.
-->
<session-management session-fixation-protection="none">
<concurrency-control/>
</session-management>

<!-- login-page:默认指定的登录页面. authentication-failure-url:出错后跳转页面. default-target-url:成功登陆后跳转页面 -->
<form-login login-page="/login.jsp"
authentication-failure-url="/common/403.jsp"
default-target-url="/admin.jsp" />
<!-- logout-success-url:成功注销后跳转到的页面; -->
<logout logout-success-url="/login.jsp"/>
<http-basic />

</http>

<!--
连接池.我spring配置文件中配的有.所以这里就注掉了.
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <beans:property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <beans:property name="url" value="jdbc:mysql://localhost/demo"/>
        <beans:property name="username" value="root"/>
        <beans:property name="password" value="root"/>
    </beans:bean>
-->

<!-- 权限管理操作 -->
<authentication-manager>
<authentication-provider>
<!--
密码加密方式. 常用的有md5 和 sha.
salt-source:忘记了.. 手头api关了,网速卡就不上网查了. 类似在md5上又加了一层. 放置暴力破解. 追加安全性.
<password-encoder hash="md5">
<salt-source user-property="username"/>
</password-encoder>
-->
<!-- 注入dataSource验证数据库中的用户名.密码.账号状态.和权限相关; -->
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="select username,password,enabled from user where username = ? and enabled = 1"
authorities-by-username-query="select u.username,r.name from user u join user_role ur on u.uid = ur.uid join role r on r.rid = ur.rid where u.username = ?" />
<!--
使用固定的用户名和密码及权限来做验证.
<user-service>
<user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="user" password="user" authorities="ROLE_USER" />
</user-service>
-->
</authentication-provider>
</authentication-manager>
<!--
<beans:bean id="userDetailsServiceImpl" class="com.demo.test.service.impl.UserDetailsServiceImpl" />
-->

<!--
此配置只是自己学习的一个小demo. 数据库也建的比较随意 比较简单. 使用的是角色权限. 个人比较推荐组权限来控制.. (由于工作经验限制,此处为个人理解)
我的库如下:
user:username\password\enabled
role:name\desc
user_role:uid\rid
-->
</beans:beans>


以上配置结束后可以完成用户登录\权限验证等操作.
配置和使用到这里就结束了. 今天下午的小心得.. spring-security很强大. 在这里感谢family168的在线帮助. 谢谢.. 希望对没有接触过spring-security的朋友有所帮助.







注:这是我复制别人的 。
分享到:
评论

相关推荐

    SpringSecurity3.0 Demo

    在本项目"SpringSecurity3.0 Demo"中,我们将深入探讨SpringSecurity 3.0版本的功能和用法。 首先,SpringSecurity的核心功能包括用户认证(Authentication)和权限授权(Authorization)。在3.0版本中,它引入了更...

    SpringSecurity 3.0基础配置实例+Mysql数据库文件+Jar包

    本实例包含SpringSecurity3.0的基本配置,包含所需的Jar包和mysql数据库文件,直接导入myeclipes中并导入数据库即可运行,配置文件简单易懂,适合SpringSecurity初学者配置入门。数据库密码为md5加密后的字符串,可...

    spring security3.0所需要的最精简的jar包

    在3.0版本中,Spring Security 已经相当成熟,提供了丰富的特性来保障应用的安全性。 在开始使用Spring Security时,了解并正确引入必要的jar包是至关重要的。以下是你提供的压缩包文件中的关键组件: 1. **spring...

    spring security3.0帮助文档

    本文将深入探讨Spring Security 3.0在权限控制方面的应用,包括数据库设计、实体模型以及配置方法。 #### 数据库设计 在实现权限控制时,数据库的设计至关重要。Spring Security推荐使用以下表结构: 1. **...

    SpringSecurity3.0 教程

    本教程将深入探讨SpringSecurity3.0的核心概念、配置及其实现方式,帮助开发者理解并掌握如何在Java应用中实现强大的安全防护。 一、SpringSecurity概述 SpringSecurity是一个开源项目,其主要目标是为Java应用提供...

    SpringSecurity3.0.x官方参考文档(英文+中文双解版)

    Spring Security 3.0.x 提供了基于XML和基于Java的配置方式。XML配置灵活且易于理解,适合初学者;而基于Java的配置更加简洁,适合经验丰富的开发者,可以通过注解来配置安全行为。 ### 3. 身份验证...

    springMVC+springSecurity3.0+maven

    标题 "springMVC+springSecurity3.0+maven" 指的是一个集成项目,它结合了Spring MVC、Spring Security 3.0和Maven这三个关键的Java开发工具和技术。让我们逐一深入理解这些技术及其相互之间的关系。 首先,Spring ...

    spring security3.0 demo

    这个“spring security3.0 demo”很可能是为了展示如何在实际应用中配置和使用Spring Security。 首先,Spring Security的核心概念包括: 1. **Filter Security Interceptor (FSI)**:这是Spring Security的主要...

    Spring Security 3.0 权限管理

    Spring Security 3.0 是一个强大的安全框架,用于在Java应用程序中实现全面的安全管理解决方案。它专注于提供身份验证、授权和访问控制功能,确保只有经过验证的用户才能访问受保护的资源。本教程将深入探讨Spring ...

    spring security3.0所有最新开发包及源码及文档

    3. **文档**:可能包括用户指南、API参考文档、开发者文档等,帮助开发者了解如何使用和配置Spring Security 3.0。 4. **示例代码**:演示了如何在实际应用中集成和使用Spring Security,有助于快速上手。 5. **...

    spring security 3.0入门教程PDF

    通过以上的知识点,用户能够对Spring Security 3.0有一个全面的了解,并且能够根据这些知识开始配置和使用Spring Security,来为自己的Web应用程序提供安全性保护。随着学习的深入,用户可以对框架进行更高级的定制...

    spring security 3.0x remember-me 免登陆

    在Spring Security 3.0x中,配置"remember-me"服务主要包括以下几个步骤: 1. **依赖配置**:首先,确保你的项目依赖于Spring Security 3.0.x版本。在你的pom.xml或build.gradle文件中添加相应的依赖。 2. **配置...

    Spring Security 3.0 安全权限管理手册

    &lt;html xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"&gt; &lt;h1&gt;Welcome, &lt;sec:authentication property="principal.username"/&gt;&lt;/h1&gt; ``` ##### 4. 实现方法级安全 在方法级别添加安全...

    Spring-Security3.0自定义表结构

    ### Spring Security 3.0 自定义表结构详解 在企业级应用开发中,Spring Security作为Spring框架的一个子项目,提供了一套完整的权限管理和安全性解决方案。它不仅能够处理身份验证(authentication)和授权...

    spring3.0+spring security3.1.4 api chm 中文版

    《Spring 3.0 + Spring Security 3.1.4 API 中文版》是一份集成了Spring框架3.0和Spring Security 3.1.4的中文帮助文档,旨在为开发者提供详尽的API参考和指导。这两个核心组件在企业级Java应用开发中扮演着至关重要...

    springsecurity3.0终极配置单

    花了一个星期的时间,搞了这份配置表,希望对后来的同学有用。

    springSecurity3.0

    在本示例中,我们关注的是Spring Security 3.0版本,它在Spring MVC、Spring JDBC和AOP(面向切面编程)事务管理的基础上构建了一个安全框架。这个框架为Web应用程序提供了全面的安全解决方案,包括用户认证、授权、...

    Spring-Security2.0 和 3.0中文文档

    学习Spring Security 2.0 和 3.0 的中文文档,将帮助开发者深入理解如何配置和使用其核心组件,以及如何处理常见的安全问题。文档通常会包含详细的配置示例、API参考、教程和最佳实践,帮助开发者构建安全的Java应用...

    spring-security-3.0 GA

    2. 面向注解的配置:Spring Security 3.0 GA 支持使用Java配置或基于注解的配置,使代码更简洁、可读性更强。 四、安全过滤链 Spring Security 的过滤链是处理请求的关键,3.0 GA 版本中,过滤链可以通过`...

Global site tag (gtag.js) - Google Analytics