我们知道,在SpringBoot项目引入SpringSecurity依赖之后,security在你获取任何接口之前自动会帮你加载一个默认的登录页面,如下图:

spring security 修改login页面 spring security 默认登录页面_spring


但是往往一般情况下我们会选择自己定义登录页面。首先,我们需要新建一个config的包用来存放配置,然后新建一个SecurityConfig类,使其继承WebSecurityConfigurerAdapter,如下图所示:

spring security 修改login页面 spring security 默认登录页面_登录页面_02


然后我们需要给SecurityConfig类上面加上@EnableWebSecurity注解,这样便可以被Spring发现并注册,然后让SecurityConfig类继承于WebSecurityConfigurerAdapter,如下图:

spring security 修改login页面 spring security 默认登录页面_spring_03


WebSecurityConfigurerAdapter类默认声明了一些安全特性,如验证所有请求、允许用户表单登录进行身份验证、允许HTTP基本认证等。在该类中含有一个configure(HttpSecurity http)方法,我们需要覆写它从而对项目进行安全配置。

在使用之前我先简单说说HttpSecurity,它实际上相当于SpringSecurity命名空间配置方式中的XML文件内的标签,允许我们为特定的HTTP请求配置安全策略。HttpSecurity中提供了许多配置相关的方法,分别对应值着命名空间中的字标签。例如authorizeRequests()、formLogin()、httpBasic()和csrf()分别对应intercept-url、from-login、http-basic和csrf标签。在调用这些方法之后,除非使用and()方法结束当前标签,上下文才会回到HttpSecurity,否则链式调用的上下文将自动进入对应的标签域

接下来我们便开始自定义一个登录的表单页面 login.html(可以实现简单登录注册就好),如下图:

spring security 修改login页面 spring security 默认登录页面_登录页面_04


然后将这个写好的页面放在resources/resources/路径下,之后我们便可以开始覆写configure(HttpSecurity http)方法了,代码如下:

package com.example.demo.config;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

/**
 * @Author: Pinyk
 * @Date: 2019/10/23 19:29
 */

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.
                authorizeRequests()
                .antMatchers("/web/**").permitAll()  //允许/web路径下的url,这里可以自己根据需求定制
                .anyRequest().authenticated()    //操作必须是已登录状态
                .and()
                .formLogin()
                .loginPage("/login.html")       //跳转自己定制的登录界面
                .permitAll()     //自定义登录页面权限放开
                .and()
                .csrf().disable()  //跨站请求伪造防护功能,这个先不用管,直接禁用了
                .httpBasic();
    }
}

这样我们便对安全认证进行了简单的配置,接下来我们开始测试一下项目中的任意路径,会直接跳转到我们默认的页面,如下图:

spring security 修改login页面 spring security 默认登录页面_spring_05


本篇博客就介绍到这,如果发现问题或产生任何疑问请直接提出