Spring Security 自定义表单登录流程

本文介绍了如何在Spring Boot中自定义Spring Security的登录页面和登录处理流程。首先,通过创建html页面和配置视图解析器来搭建自定义登录页。接着,配置Spring Security允许访问登录页并指定登录处理URL。进一步讨论了登录页重构为可配置的需求及其实现。还涵盖了认证成功和失败处理器的定制,以及`successForwardUrl`和`defaultSuccessUrl`的区别,并解决在使用它们时可能出现的问题。最后,概述了Spring Security的认证逻辑。
摘要由CSDN通过智能技术生成

在实际开发中是需要我们重新配置自己登录页,走自己的登录认证请求的。

自定义登录页

Spring boot中准备html页面

**第一步:**在resources目录下,新建一个resources目录,再在resources目录下新建一个pages目录。
**第二步:**在配置文件中,进行视图配置。

spring:
  mvc:
    view:
      prefix: pages/   # 指定html目录
      suffix: .html  #后缀名

第三步: 在pages下,新建一个login.html文件

表单中的action的url,是进行登录认证的url。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
    <h2>标准登录页</h2>
    <h3>表单登录</h3>
    <form action="/authentication/form" method="post">
        <span>用户名:</span>
        <input type="text" name="username" value="user"><br>
        <span>密码:</span>
        <input type="password" name="password" value="123456"><br>
        <input type="submit" value="登录">
    </form>
</body>
</html>

第四步: 通过controller跳转页面,跳转登录页的地址是/login-form

    @RequestMapping("/login-form")
    public String login() {
        return "login";
    }
Spring Security进行登录页配置
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

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

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // 定义请求方式 是form表单 还是 basics模式
        http.formLogin()
                // 配置登录页
                .loginPage("/login-form")
                // 指定登录请求的路径
                .loginProcessingUrl("/authentication/form")
                .and()
                .authorizeRequests()
                // 需要配置登录路径不做权限验证,不然会出现重定向次数过多。
                .antMatchers("/login-form").permitAll()
                .anyRequest()
                .authenticated();
    }
}

说明:

loginPage : 指定登录页的路径
同时需要通过.antMatchers("/login-form").permitAll()对登录的路径开放权限认证,不然会出现重复次数过多的问题。

在Spring Security中,认证请求路径默认为/login,才会去UsernamePasswordAuthenticationFilter中进行认证。如果指定了认证的路径,此处自定义的认证路径为form表单的action的url(/authentication/form)。那就需要在Spring Security的配置中通过loginProcessingUrl进行配置。

保证loginProcessingUrl中的url 和 form表单action的url要一致。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值