`
arronxu1989
  • 浏览: 3072 次
社区版块
存档分类
最新评论

spring-security3 配置和使用

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

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


<?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中添加配置,内容如下:

   <!-- 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页面.内容如下:

     <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 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很强大.

希望对没有接触过spring-security的朋友有所帮助
分享到:
评论

相关推荐

    spring-security-web源码所需jar包

    1. **spring-context-3.1.2.RELEASE.jar**:提供Spring的IoC(Inversion of Control)容器和AOP(Aspect Oriented Programming)支持,这是Spring框架的基础,为Spring Security提供了配置和事件处理能力。...

    spring-security所需要的jar包,

    开发人员可以使用这些测试类来验证他们的Spring Security配置是否正确,或者进行自定义扩展的单元测试。 4. **spring-security-core-tiger-2.0.5.RELEASE-sources.jar**:这个jar包包含了Spring Security核心组件的...

    spring-boot-security-saml, Spring Security saml与 Spring Boot的集成.zip

    spring-boot-security-saml, Spring Security saml与 Spring Boot的集成 spring-boot-security-saml这个项目在处理 spring-security-saml 和 Spring Boot 之间的平滑集成的同时,在处理内部的配置的gritty和锅炉板的...

    spring-security Jar包

    Spring Security 3.0.5.RELEASE版本可能使用的是XML配置,而在后续版本中,更倾向于使用Java配置API,使得配置更加直观和简洁。 10. **安全性测试**:Spring Security 提供了专门的测试支持,帮助开发者编写单元...

    spring-boot spring-security-oauth2 完整demo

    在这个完整的demo中,开发者已经构建了一个使用Spring Boot、Spring Security和OAuth2的系统。关键在于如何配置OAuth2以实现微信式授权。微信授权流程通常包括以下步骤: 1. 用户访问应用,应用重定向至微信授权...

    spring-security-oauth2-2.0.3.jar(包括jar包,源码,doc)

    Spring Security OAuth2是一个广泛使用的Java库,用于在Spring应用程序中实现OAuth2协议,提供安全授权服务。OAuth2是一种授权框架,允许第三方应用在用户许可的情况下访问其私有资源,如在社交媒体上的数据。2.0.3....

    spring-security3.1.4 完整的jar包

    3. **spring-security-config-3.1.4.RELEASE.jar**:配置模块允许开发者使用XML或注解来定义安全规则,如访问控制、角色分配等。它包含了表达式语言,使得在定义访问控制时可以使用自定义逻辑。 4. **spring-...

    spring-security-oauth2源码

    - 示例:展示如何配置和使用Spring Security OAuth2的示例项目。 - 测试:单元测试和集成测试,用于验证框架的正确性。 - 文档:关于框架使用的文档和API参考。 理解Spring Security OAuth2的关键在于熟悉OAuth2...

    spring-boot-security

    3. **使用Spring Security的API**:在你的控制器或其他服务中,可以注入`Authentication`和`SecurityContextHolder`来获取当前用户的认证信息。 4. **错误处理**:Spring Security默认提供了一些错误页面,但你可以...

    spring-security源代码

    通过深入研究"spring-security-parent-2.0.4"项目源代码,开发者能够理解其内部工作机制,学习如何配置和扩展Spring Security以满足特定安全需求。同时,这也有助于提升对Spring框架的理解,因为Spring Security是...

    spring security 4.0.0所需jar包

    - `spring-security-config-4.0.0.CI-SNAPSHOT.jar`:提供XML和注解配置,简化安全设置。 - `spring-security-config-4.0.0.CI-SNAPSHOT-sources.jar`:配置模块的源代码。 4. **spring-security-acl**: - `...

    spring-security-oauth2-authorization-server.zip

    Spring Security是Java开发人员广泛使用的安全框架,它提供了全面的身份验证和授权解决方案。本项目“spring-security-oauth2-authorization-server”将带你深入理解如何利用Spring Security OAuth2构建一个授权...

    spring-security-material-master.zip

    本资料“spring-security-material-master.zip”显然是一份关于Spring Security的教程材料,特别关注的是在Spring Boot环境下如何配置和使用Spring Security来保护静态资源。 在Spring Boot集成Spring Security时,...

    spring-security多登录页面配置

    从给定的部分内容来看,我们可以看到这是一个Spring Security的配置文件,使用了Spring Security的XML命名空间。下面是一个示例性的配置片段: ```xml &lt;http auto-config="true"&gt; &lt;!-- 允许访问登录页面 --&gt; ...

    springmvc4+spring4+mybatis3+spring-security3的环境搭建

    在本文中,我们将深入探讨如何搭建一个基于Spring MVC 4、Spring 4、MyBatis 3和Spring Security 3的开发环境。这个环境适用于构建企业级的Java Web应用程序,提供强大的模型-视图-控制器(MVC)架构、持久层解决...

    Spring-Security-Demo-master.zip

    在IT领域,Spring Security和Spring Boot是两个极为重要的组件,它们为开发者提供了强大的安全管理和应用程序构建能力。本篇将详细讲解如何将Spring Security集成到Spring Boot项目中,以及涉及到的相关知识点。 一...

    spring-security-oauth2与spring-security-web 3.1.2 源码

    Spring Security是Java领域中广泛应用的...总的来说,`spring-security-web 3.1.2`和`spring-security-oauth2`的源码分析将是一次深入学习Web安全和OAuth2授权的好机会,有助于提升对现代Web安全架构的理解和实践能力。

    spring-Security-oauth2.zip

    总之,"spring-Security-oauth2.zip" 包含的资料将指导开发者如何在Spring Security环境中配置和使用OAuth2,实现安全的身份验证和授权,为Web应用提供更高级别的安全保护。通过理解OAuth2的工作原理和Spring ...

    springsecurity所有jar包

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于Java应用程序。它为Web应用和企业级应用提供安全解决方案,包括用户认证、权限控制、会话管理等多个方面。在Spring Security 3.1.2版本中,...

Global site tag (gtag.js) - Google Analytics