使用Spring Security实现自定义登录页面及相关配置

使用Spring Security实现自定义登录页面及相关配置、显示用户信息、退出功能

示例:

1.工程结构
使用Spring Security实现自定义登录页面及相关配置_第1张图片
1.1.它们三个可官网下载:
我的百度网盘:
链接:https://pan.baidu.com/s/17TzgQX0OVSef49aAawXf6w
提取码:0mqm
在这里插入图片描述
1.2.主启动类 CrowdManagerApplication.java:
在这里插入图片描述

2.Spring Security的依赖:


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

3.CrowdConfig.java:

@Configuration
@EnableWebSecurity
public class CrowdConfig extends WebSecurityConfigurerAdapter {

    //执行权限配置,如:为指定资源分配权限,开放无需权限的资源等
	@Override
	protected void configure(HttpSecurity http) throws Exception {
	    //父类中默认进行了配置,我们将其拿到子类,按照自己的需求进行修改
	    http
	            .authorizeRequests()//进行权限设置
	            .anyRequest()//任何请求
	            .authenticated()//进行认证
	            // 这是ant语法,表示向后退一步,回到HttpSecurity位置的那一个级别,
	            // 可以认为是使用这种方式实现HttpSecurity对象通过连续调用方法实现配置,
	            // 每进行一个板块的配置完毕,则向后退一步回到HttpSecurity位置
	            .and()
	            .formLogin()//设置表单登录,后续可以在这里修改自定义登录页面
	            .loginPage("/login.html") //设置自定义的登录页面
	
	            //指定处理登录请求的路径,对应form表单的action地址
	            .loginProcessingUrl("/login").permitAll()
	            //设置接收表单提交的用户name,默认为username
	            .usernameParameter("account")
	            //设置接收表单提交的用户密码,默认为password
	            .passwordParameter("password")
	            //指定权限认证失败跳转的错误页面
	            .failureUrl("/login.html?login=error")
	            //直接访问登录页面时返回的地址,如果访问的是登录页的话返回指定的地址
	            .defaultSuccessUrl("/main.html",true)
	            //指定退出登录URL
	            .and().logout().logoutUrl("/logout")
	//           .logoutSuccessUrl("http://baidu.com") 设置退出后跳转的路径
	            .and().csrf().disable() //禁用csrf功能,这里暂时用不到
	    ;
	}

    //设置不需要权限认证的资源
    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/kaptcha","/bootstrap/**","/css/**",
                "/fonts/**","/img/**","/jquery/**","/script/**","/ztree/**","/layer/**");
    }
}

自定义登录页面:

4.login.html:
注:部分代码省略
在这里插入图片描述

在页面中显示用户信息:
在这里插入图片描述
5.ManagerController.java:

//springsecurity,在页面中显示用户信息
    @GetMapping("/main.html")
    public String main(HttpSession session){
        //获取用户信息,存放到session域中
        SecurityContextImpl securityContextImpl =(SecurityContextImpl)session.getAttribute("SPRING_SECURITY_CONTEXT");
        Authentication authentication = securityContextImpl.getAuthentication();
        //将主体转为用户详情对象
        UserDetails userDetails =(UserDetails)authentication.getPrincipal();
        String username = userDetails.getUsername();
        session.setAttribute("username",username);
        return "main";
    }

6.common.html模板中:
在这里插入图片描述


实现退出功能:
当点击退出时,应清除掉用户在session中的信息,并且跳转到非权限校验的页面,如:登录页面。
使用Spring Security实现自定义登录页面及相关配置_第2张图片
7.common.html模板中:
使用Spring Security实现自定义登录页面及相关配置_第3张图片
8.错误提示:ManagerController.java中
在这里插入图片描述
9.ManagerController.java控制层中:
没有过多的前端调试,只为实现其功能

 @GetMapping("/login.html")
    public String tologin(HttpServletRequest request,Model model){
        //String cr = request.getParameter("codeerror");
       // if(cr !=null){
          // model.addAttribute("error","验证码输入错误!请重试");
       // }
        String lo = request.getParameter("login");
        if(lo !=null){
            model.addAttribute("error","帐号或密码错误,登录失败!请重试");
        }
        return "login";
    }

9.login.html中:
使用Spring Security实现自定义登录页面及相关配置_第4张图片

10.application.yml配置文件中:

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/kmu_crowd?characterEncoding=utf8
    username: root
    password: root

11.pom.xml文件中:



    4.0.0
    com.kmu
    crowd-manager
    0.0.1-SNAPSHOT
    crowd-manager
    Demo project for Spring Boot

    
        1.8
        UTF-8
        UTF-8
        2.3.0.RELEASE
    

    
        
        
            com.github.penggle
            kaptcha
            2.3.2
        
        
            org.springframework.boot
            spring-boot-starter-security
        

        
            cn.hutool
            hutool-all
            5.3.7
        

        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.3.2
        

        
            org.springframework.boot
            spring-boot-starter-data-jdbc
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            mysql
            mysql-connector-java
            runtime
            5.1.38
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.8
                    1.8
                    UTF-8
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
        
            
                src/main/java
                
                    **/*.xml
                
            

            
                src/main/resources
                true
                
                    **/*.woff
                    **/*.woff2
                    **/*.ttf
                
            
            
                src/main/resources
                false
                
                    **/*.woff
                    **/*.woff2
                    **/*.ttf
                
            
        
    

如有遗漏,敬请谅解

你可能感兴趣的:(SpringSecurity,java)