首页 > 其他分享 >spring security 指定了 failureForwardUrl 的请求接口 但是没有效果

spring security 指定了 failureForwardUrl 的请求接口 但是没有效果

时间:2024-06-06 22:56:30浏览次数:14  
标签:登录 spring org 跳转 html failureForwardUrl import security

  • springboot版本:3.3.0
  • spring security版本:3.3.0

代码如下:

spring security 配置类

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;

/**
 * <p>
 * spring security 配置类.
 * </p >
 *
 * @author Heqq
 */
@Configuration
public class SecurityConfiguration {

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        return http
                .authorizeHttpRequests(auth -> {
                    auth.requestMatchers("/error.html").permitAll() // error.html不需要被认证
                            .requestMatchers("/login.html").permitAll() // login.html不需要被认证
                            .anyRequest().authenticated(); // 所有请求都必须要被认证,必须登录之后被访问
                })
                .formLogin(c -> {
                    c.loginProcessingUrl("/login") // 这个login不是随随便便写的,要跟login.html表单的action属性值一致,当发现是/login的时候,认为是登录,会执行UserDetailsServiceImpl的登录逻辑
                            .loginPage("/login.html")// 自定义登录页面,斜杠不能少!!!
//                            .successForwardUrl("/main.html")// 登录成功后跳转的页面
                            .successForwardUrl("/to-main")// 登录成功后跳转页面 Post请求
                            .failureForwardUrl("/to-error"); // 登录失败后跳转页面  Post请求
                })
                .csrf(csrf -> csrf.disable()) // 关闭csrf防护
                .build();
    }
}

controller接口

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * <p>
 * 用户登录控制器.
 * </p >
 *
 * @author Heqq
 */
@Slf4j
@Controller
public class LoginController {

    /**
     * 登录成功后,跳转到主页.
     *
     * @return
     */
    @RequestMapping("to-main")
    public String toMain() {
        log.info("登录成功");
        return "redirect:main.html";
    }

    /**
     * 登录失败跳转的页面.
     *
     * @return
     */
    @RequestMapping("to-error")
    public String toError() {
        log.info("登录失败");
        return "redirect:error.html";
    }
}

静态页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录失败</title>
</head>
<body>
操作失败,请重新登录 <a href="/login.html">跳转</a>
</body>
</html>

启动项目后,来到登录页面,输入错误的密码,始终跳转到login.html页面,期望结果是:输入错误密码来到错误页面。

原因:虽然在spring security配置类放行了静态资源,也指定了登录失败的跳转url,但是没有放行跳转到错误页面的url!!!

 

标签:登录,spring,org,跳转,html,failureForwardUrl,import,security
From: https://www.cnblogs.com/-hqq/p/18236239

相关文章

  • 基于springboot的相亲网站管理系统,相亲管理系统,附源码+数据库+论文+开题报告+任务书+P
    1、项目介绍相亲网站根据使用权限的角度进行功能分析,并运用用例图来展示各个权限需要操作的功能。管理员权限操作的功能包括管理婚礼公司,管理婚礼公司预约信息,管理结婚案例,管理相亲信息,管理相亲留言,管理用户等。用户权限操作的功能包括预约婚礼公司,收藏婚礼公司,查看结婚......
  • Spring Cache的作用
    SpringCache2.1.1介绍SpringCache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。SpringCache提供了一层抽象,底层可以切换不同的缓存实现,例如:EHCacheCaffeineRedis(常用)2.1.2常用注解在SpringCache中提供了很多缓存操作的注解,常见......
  • JavaWeb_SpringBootWeb案例
    环境搭建:开发规范接口风格-Restful:统一响应结果-Result:开发流程:        第一步应该根据需求定义表结构和定义接口文档注意:    本文代码从上往下一直添加功能,后面的模块下的代码包括前面的模块,并不是某个模块中的代码只有当前功能。部门管理查......
  • 【SpringBoot + Vue 尚庭公寓实战】项目初始化准备(二)
    尚庭公寓SpringBoot+Vue项目实战】项目初始化准备(二)文章目录尚庭公寓SpringBoot+Vue项目实战】项目初始化准备(二)1、导入数据库2、创建工程3、项目初始配置3.1、SpringBoot依赖配置3.2、创建application.yml文件3.3、创建SpringBoot启动类4、MyBatisPlus配置4.1......
  • SpringCloud 负载均衡 spring-cloud-starter-loadbalancer
    简述spring-cloud-starter-loadbalancer是SpringCloud中的一个组件,它提供了客户端负载均衡的功能。在SpringCloud的早期版本中,NetflixRibbon被广泛用作客户端负载均衡器,但随着时间推移和NetflixRibbon进入维护模式,SpringCloud社区开始转向更灵活、更易于维护......
  • 【入门教程】5分钟教你快速学会集成Java springboot ~
    介绍ApacheDolphinScheduler是一个分布式易扩展的开源分布式调度系统,支持海量数据处理,具有任务流程调度、任务流程编排、任务监控告警、工作流引擎等功能。本文将介绍如何将ApacheDolphinScheduler集成到JavaSpringboot项目中,以实现更灵活和便捷的调度功能。步骤步骤一:添......
  • AI框架之Spring AI与Spring Cloud Alibaba AI使用讲解
    目录1AI框架1.1SpringAI简介1.2SpringAI使用1.2.1pom.xml1.2.2可实现的功能1.3SpringCloudAlibabaAI1.4SpringCloudAlibabaAI实践操作1.4.1pom.xml1.4.2配置文件1.4.3对接文本模型1.4.4文生图模型1.4.5语音合成模型1AI框架1.1SpringAI简介在软件开......
  • springboot 接口返回数据统一加密
      @Aspect@Component@Slf4jpublicclassAESTimeAspect{@Around("execution(*com.trt.sea.xxserx.controller*..*Controller.*(..))")publicObjecthandleAroundControllerMethod(ProceedingJoinPointpjp)throwsThrowable{longst......
  • Spring Boot 不能加载 tcnative-2.dll 库(Can't load library: tcnative-2.dll)
    SpringBoot不能加载tcnative-2.dll库本文将介绍怎样解决SpringBoot在启动时抛出“org.apache.tomcat.jni.LibraryNotFoundError:Can'tloadlibrary:*\tcnative-2.dll”错误。在使用SpringBoot3创建项目的过程中,将日志的级别调为debug,日志打印了“org.apache.tomca......
  • SpringBoot启动流程分析之准备应用上下文refreshContext()(八)
    SpringBoot启动流程分析之准备应用上下文refreshContext()(八)文章目录SpringBoot启动流程分析之准备应用上下文refreshContext()(八)1、准备刷新1.1、子类prepareRefresh()方法1.2父类prepareRefresh()方法2、通知子类刷新内部bean工厂3、准备bean工厂4、允许上下文子类对b......