zoukankan      html  css  js  c++  java
  • Spring Security学习笔记

    最近刚接触maven(60%的程序员都会使用,公司项目一般都用),所以建立在maven项目基础之上学习了Spring Security


    先推荐一下spring security的资料:

    点击打开链接


    点击打开链接




    一.首先建立maven的web项目

    可以参考该博客 http://blog.csdn.net/gwd1154978352/article/details/53019163


    二.配置pom.xml,在里面加入Spring security的配置文件

     <dependency>  
            <groupId>org.springframework.security</groupId>  
            <artifactId>spring-security-web</artifactId>  
            <version>3.2.0.RELEASE</version>  
        </dependency>  
        <dependency>  
            <groupId>org.springframework.security</groupId>  
            <artifactId>spring-security-config</artifactId>  
            <version>3.2.0.RELEASE</version>  
        </dependency>  
        
        <dependency>
    	    <groupId>commons-logging</groupId>
    	    <artifactId>commons-logging</artifactId>
    	    <version>1.2</version>
    	</dependency>

    三.配置web.xml文件


    context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>  
       
            classpath:applicationContext-security.xml  
        </param-value>  
    </context-param>  
      
    <!-- SpringSecurity 核心过滤器配置 -->  
    <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>
    
    <!-- Spring监听器 -->
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    	<listener>
        	<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
       	</listener>
       	<listener>
       		<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
       	</listener>


    四.配置applicationContext-security.xml文件

    官方有两种配置:
    第一种:命名空间用beans开头,但是在配置中一直需要用<security:*>来配置。
    1. <beans xmlns="http://www.springframework.org/schema/beans"  
    2.   xmlns:security="http://www.springframework.org/schema/security"  
    3.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    4.   xsi:schemaLocation="http://www.springframework.org/schema/beans  
    5.           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
    6.           http://www.springframework.org/schema/security  
    7.           http://www.springframework.org/schema/security/spring-security.xsd">  
    8.     ...  
    9. </beans> 

    第二种:命名空间用security开头,在配置中不需要security前缀,但是bean的配置需要用<beans:bean>配置。


    10. <beans:beans xmlns="http://www.springframework.org/schema/security"  
    11.   xmlns:beans="http://www.springframework.org/schema/beans"  
    12.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    13.   xsi:schemaLocation="http://www.springframework.org/schema/beans  
    14.            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
    15.            http://www.springframework.org/schema/security  
    16.            http://www.springframework.org/schema/security/spring-security.xsd">  
    17.     ...  
    </beans:beans>  


    这里使用第一种

    <?xml version="1.0" encoding="UTF-8"?>  
    <beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:sec="http://www.springframework.org/schema/security"
      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.xsd">
              
              <!-- 配置不过滤的内容 -->

    <!--所有jsp页面均在webapp下-->
            <sec:http pattern="/login.jsp" security="none"></sec:http>   
              
            <!-- auto-config='true'将自动配置几种常用的权限控制机制,包括form, anonymous, rememberMe -->
            <sec:http auto-config="true" >
                
                <!--自定义登录页面,该标签如果不设置,Spring Security会自动给你添加一个简单的登录验证界面  -->
                <!-- authentication-failure-url为验证失败跳转的页面 -->
                <!-- default-target-url 验证成功跳转的页面 -->
            <sec:form-login login-page="/login.jsp" authentication-failure-url="/login.jsp" default-target-url="/index.jsp"/>
           
            <!-- 该页面需要的权限为ROLE_user,ROLE_是固定的模式 -->
            <sec:intercept-url pattern="/index.jsp" access="ROLE_user"/>


            <!-- 无访问权限后跳转的页面 -->
            <sec:access-denied-handler error-page="/error.jsp"/>
            </sec:http>


            <sec:authentication-manager>
            <sec:authentication-provider>
            <!-- 配置用户以及相关的权限 -->
            <sec:user-service>
            <sec:user name="TOM" authorities="ROLE_user" password="TOM"/>
            <sec:user name="jack" authorities="ROLE_Manger" password="jack"/>
            </sec:user-service>
            </sec:authentication-provider>
            </sec:authentication-manager>
    </beans>


    五.自定义界面的编写

    注意:action,name是固定的,更改后Spring将无法识别

    <body>
    <form action="j_spring_security_check" method="POST">
    <table>
    <tr><td>用户名</td><td><input type="text" name="j_username"></td></tr>
    <tr><td>密 码</td><td><input type="password" name="j_password"></td></tr>
    <tr><td><input type="reset" value="重新登录"></td><td><input type="submit" value="登录"/></td></tr>
    </table>
    </form>
    </body>


    那么有人要问了,在jsp页面如何引入用户名呢?

    首先引入taglib

    <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

    通过<sec:authentication property="name"/>该方法即可获得用户名


    六.运行maven,输入jetty:run即可



  • 相关阅读:
    线程生命周期
    java集合源码分析几篇文章
    Java中的equals和hashCode方法详解
    java集合(一)
    volatile和synchronized实现内存可见性的区别
    动态代理的原理
    过滤器的使用
    pageBean的实体类
    FindUserByPageServlet
    用户信息系统_serviceImpl
  • 原文地址:https://www.cnblogs.com/gwd1154978352/p/6831933.html
Copyright © 2011-2022 走看看