作为spring全家桶之一的spring security,在配合springboot使用的时候,由于自动配置的原因,十分便捷。但是在springmvc上进行整合的时候,就需要进行很多的配置。该系列作为一个使用的记录帖,暂时不去深入讨论原理(PS:其实暂时我也不会)

jar包引入

<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-core</artifactId>
  <version>5.4.1</version>
</dependency>
<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-web</artifactId>
  <version>5.4.1</version>
</dependency>
<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-config</artifactId>
  <version>5.4.1</version>
</dependency>

web.xml配置

<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>

springsecurity.xml

对于用户验证,spring security提供两种模式,一种是非常简单的,将账号密码配置在XML文件中,使用默认的登陆页面;另一种是自定义用户验证逻辑和登录页面,先记录第一种简单的模式

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

    <!-- 设置放行 -->
    <security:http security="none" pattern="/static/**"></security:http>

    <!-- 设置拦截 auto-config="true"使用默认登录配置-->
    <security:http auto-config="true">
        <security:headers>
            <!-- iframe保护 -->
            <security:frame-options policy="SAMEORIGIN"></security:frame-options>
        </security:headers>
        <!-- 配置需要登录的url isAuthenticated代表带链接需要通过用户登录后才可以访问-->
        <security:intercept-url pattern="/demo/**" access="isAuthenticated()"></security:intercept-url>
        <!-- csrf配置 -->
        <security:csrf disabled="true"></security:csrf>
    </security:http>

    <!-- 配置认证管理 -->
    <security:authentication-manager>
        <security:authentication-provider>
            <security:user-service>
            	<!-- 直接写出用户名和密码 {noop}代表明文密码-->
                <security:user name="admin" password="{noop}admin" authorities="ROLE_ADMIN"></security:user>
            </security:user-service>
        </security:authentication-provider>
    </security:authentication-manager>
</beans>

验证

配置成功后,重启项目,/demo/**下链接都是一个简单的输出,正常可以直接访问,当我们用spring security进行管理之后,再访问的时候,就会跳到默认的登录页面,登录成功后,才能继续访问之前的页面

输入配置文件中的账号密码

登录成功,成功访问到我们原本要访问的页面

对于第一种默认的登录方式,这样就配置成功了。感觉虽然简,但是实际中几乎是不会用到的。。。。

接下来还是回归我们常用的自定义模式吧