Spring-Security-教程(三)--基于登录认证记住我实例

介绍

本篇文章基于Spring Security 入门教程(一) - 简单的登录认证 基础上修改的记住我教程。

博客地址:https://blog.ffspace.cn
项目代码:https://github.com/Bootcap/spring-security-study-session

一、配置pom.xml文件




  4.0.0

  spring-security-study-session
  com.bootcap.session.security
  spring-security-study-session
  1.0.0-SNAPSHOT

  
    org.springframework.boot
    spring-boot-starter-parent
    2.0.1.RELEASE
  

  
    1.8
    UTF-8
    UTF-8
  


  
 
        
            org.springframework.boot
            spring-boot-devtools
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-security
        

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

  
    
      
        org.springframework.boot
        spring-boot-maven-plugin
      
    
  

二、修改TemplateConfig.java类
路径:src/java/com/bootcap/session/security/configuration/TemplateConfig.java

@Configuration
public class TemplateConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
        registry.addViewController("/index").setViewName("index");
        registry.addViewController("/login").setViewName("login");
    }
}

三、修改WebSecurityConfig.java
路径:src/java/com/bootcap/session/security/configuration/WebSecurityConfig.java

package com.bootcap.session.security.configuration;

/**
 * 2018-12-10 11:03
 */
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

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

    // 重点修改的方法 
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .anyRequest().authenticated()
                .and()
                    .formLogin()
                        .loginPage("/login")
                        .permitAll().defaultSuccessUrl("/")
                .and()
                    .logout()
                        .invalidateHttpSession(true)
                        .clearAuthentication(true)
                        .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                        .logoutSuccessUrl("/login?logout")
                        .permitAll()
                .and()
                    .rememberMe()
                        .key("unique-and-secret")
                        .rememberMeCookieName("rememberMeCookieName") // 设置cookie名称
                        .tokenValiditySeconds(24 * 60 * 60); // 设置令牌有效期,若不自定义:默认为2周

    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication() // 在内存中进行身份验证
                .passwordEncoder(new BCryptPasswordEncoder())
                .withUser("user")
                .password(new BCryptPasswordEncoder().encode("123456"))
                .roles("USER");
    }

}

四、修改页面文件
路径:src/resources/templates/

4.1 修改login.html,在原基础上加上记住我复选框



    
    登录页面


登录页面

用户名或密码不正确
你已经退出登录
记住我
4.2 修改index.html



    
    
    


    Spring Security 登录认证记住我实例


Spring Security 登录认证记住我实例

| 登录用户: | 角色: | 退出登录

五、启动Application.java运行项目

5.1 项目启动完成后,浏览器访问:localhsot:8080,会自动跳到登录页面进行登录,并勾选记住我。
5.2 登录成功后会挑战到index.html页面,通过debug发现,spring security已经为我们分配了刚才命名的cookie。
5.3 为了验证是记住我登录,我们把JSESSIONID删除,并刷新页面,会发现又刚删除的JSESSIONID又产生了。而且Value值已经改变。

上一篇:Spring Security 入门教程(二)- 基于数据库信息进行验证
下一篇:Spring Security 入门教程(四)- 权限动态修改

你可能感兴趣的:(Spring-Security-教程(三)--基于登录认证记住我实例)