zoukankan      html  css  js  c++  java
  • 最简单的Spring Security配置示例

    代码结构:

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.nihaorz</groupId>
        <artifactId>spring-security</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-web</artifactId>
                <version>4.1.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-config</artifactId>
                <version>4.1.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>taglibs</groupId>
                <artifactId>standard</artifactId>
                <version>1.1.2</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    
    </project>
    

      

    spring-security.xml

    <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.xsd
            http://www.springframework.org/schema/security
            http://www.springframework.org/schema/security/spring-security.xsd">
    
        <!-- 静态资源不需要控制权限 -->
        <http pattern="/static/**" security="none"/>
    
        <http use-expressions="false">
            <!-- 登录页面不需要控制权限 -->
            <intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
            <!-- 访问其他所有页面都需要有USER权限 -->
            <intercept-url pattern="/**" access="ROLE_USER" />
            <!-- 配置登录页面地址login-page、登录失败后的跳转地址authentication-failure-url -->
            <form-login login-page='/login.jsp' authentication-failure-url='/login.jsp?error' />
            <!-- 登出功能 -->
            <logout />
            <remember-me token-validity-seconds="30"/>
        </http>
    
        <authentication-manager>
            <authentication-provider>
                <user-service>
                    <!-- 这里创建两个用户,可以通过用户名密码登录 -->
                    <user name="admin" password="123456" authorities="ROLE_USER, ROLE_ADMIN" />
                    <user name="nihaorz" password="123456" authorities="ROLE_USER" />
                </user-service>
            </authentication-provider>
        </authentication-manager>
    
    </beans:beans>
    

      

    applicationContext.xml

    <?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.xsd
            http://www.springframework.org/schema/util
            http://www.springframework.org/schema/util/spring-util-4.0.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd"
           xmlns:util="http://www.springframework.org/schema/util"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:context="http://www.springframework.org/schema/context">
    
        <import resource="classpath:config/spring-security.xml"/>
    
    </beans>
    

      

    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
    
        <!-- configure the springIOC -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:config/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>
    
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
        </welcome-file-list>
    </web-app>
    

      

    login.jsp

    <%--
      Created by IntelliJ IDEA.
      User: Nihaorz
      Date: 2017/10/11
      Time: 14:15
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
        <title>登录页面</title>
        <style>
            .login-form {
                 200px;
                margin: 0 auto;
                font-size: 14px;
            }
    
            .login-form p input[type=text], .login-form p input[type=password] {
                 200px;
                padding: 5px;
            }
    
            .login-form p input[type=checkbox], .login-form p label {
                height: 24px;
                margin: 0;
            }
    
            .login-form p.parent:after {
                content: ' ';
                display: table;
                clear: both;
            }
    .login-form p.message { color: red; } </style> </head> <body> <div style="text-align: center;"> <c:url value="/login" var="loginUrl"/> <form action="${loginUrl}" method="post" class="login-form"> <p> <input type="text" id="username" name="username" placeholder="用户名"/> </p> <p> <input type="password" id="password" name="password" placeholder="密码"/> </p> <p class="parent"> <input type="checkbox" id="keep-login" name="remember-me" checked style="float: left;"> <label for="keep-login" style="float: left;"> 记住我</label> <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> <button type="submit" style="float: right;">登录</button> </p> <c:if test="${param.error != null}"> <p class="message">用户名或密码无效!</p> </c:if> <c:if test="${param.logout != null}"> <p class="message">您已注销!</p> </c:if> </form> </div> </body> </html>

      

    logout.jsp

    <%--
      Created by IntelliJ IDEA.
      User: Nihaorz
      Date: 2017/10/11
      Time: 14:24
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <c:url value="/logout" var="logoutUrl"/>
    <form action="${logoutUrl}" method="post">
        <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
        <input type="submit" value="退出"/>
    </form>
    </body>
    </html>
    

      

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    我是首页
    </body>
    </html>
    

      

    参考:http://xxgblog.com/2015/09/06/spring-security-start/

  • 相关阅读:
    MT【55】近零点
    MT【54】一道二次函数问题的几何意义
    MT【53】对数平均做数列放缩
    MT【52】空间法向量理解直线条数
    MT【51】一道三角求最值问题
    MT【50】高中曲线系集大成之双切线法
    MT【49】四次函数求最值
    ps中图层混合模式、多图层叠加、不透明度、填充、图层样式详解
    GDB基本调试
    24位和8位BMP图片保存纯C代码
  • 原文地址:https://www.cnblogs.com/nihaorz/p/7650943.html
Copyright © 2011-2022 走看看