Spring Boot 配置 Spring Security并自定义登录页面

1.添加依赖


    org.springframework.boot
    spring-boot-starter-security

添加完依赖后就可以实现登录拦截并且登录的一些功能,默认用户名是user,默认密码是控制台输出的随机密码

Spring Boot 配置 Spring Security并自定义登录页面_第1张图片

但是spring自定义的页面是非常简约的,高版本的其实也挺好看的,但是我们希望有更多自定义的样式

2.编写自定义的登录页面




    
    
    
    
    
    
    
    
    登录


LOGIN

对应的login.css文件为

body{
    background: url("../img/bg01.jpg"),url("../img/bg02.jpg"),url("../img/bg01.png"),url("../img/bg04.png");
    animation-name:myfirst;
    animation-duration:12s;
    /*变换时间*/
    animation-delay:2s;
    /*动画开始时间*/
    animation-iteration-count:infinite;
    /*下一周期循环播放*/
    animation-play-state:running;
    /*动画开始运行*/
   overflow-y: hidden;
}
@keyframes myfirst
{
    0%   {background:url("../img/bg01.jpg");}
    34%  {background:url("../img/bg02.jpg");}
    67%  {background:url("../img/bg01.png");}
    100% {background:url("../img/bg04.png");}
}
.form{background: rgba(255,255,255,0.2);width:400px;margin:120px auto;}
/*阴影*/
.fa{display: inline-block;top: 27px;left: 6px;position: relative;color: #ccc;}
input[type="text"],input[type="password"]{padding-left:26px;}
.checkbox{padding-left:21px;}

其余用到了bootstrap的框架文件,自行添加就可以了

3.配置Spring Security

添加配置类——SecurityConfig,让该类继承WebSecurityConfigurerAdapter并重写方法

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .formLogin().loginPage("/user/login").loginProcessingUrl("/login").permitAll()
                .and()
                .logout().permitAll()
                .and()
                .csrf().disable();
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        web
                .ignoring()
                .antMatchers("/js/**","/css/**","/fonts/**","/img/**");
    }
}

在类上面加上@Configuration和@EnableWebSecurity让配置生效,其中formLogin().loginPage("/user/login").loginProcessingUrl("/login").permitAll()中的loginPage指定了我们的自定义页面,loginProcessingUrl("/login")指定了我们表单提交的接口,注意这里的login接口要与form中action中的接口名一致,permitAll这个方法相当于设定前面这俩个接口不被拦截,代码里还有一个configure方法,参数是WebSecurity 类型的,重写这个方法的目的是不让静态资源被拦截导致样式错误。

完成上面的步骤一个简单的spring security功能就实现了,后续会继续发一些它的其他用法。

本文实例代码

你可能感兴趣的:(Spring,Spring,Security)