Spring security 自定义登录页的post请求错误405

Spring security 自定义登录页认证成功但报错405

本文主要记录自己在学习中遇到的错误和解决方法

1 环境

springboot + thymeleaf + spring security

2 错误

出现此页面 但确实已经认证成功
在这里插入图片描述

3 相关代码

3.1 security配置类

在这里插入代码片
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class NewSevurityConfig extends WebSecurityConfigurerAdapter {
	
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        
        // 自定义登录页
        http.formLogin()
				.loginPage("/toLogin")
                .usernameParameter("username")
                .passwordParameter("password")
				.loginProcessingUrl("/login")
                .successForwardUrl("/");

    }
	
	// 其他配置省略
}

3.2 前端主要代码

<div>
    <form th:action="@{/login}" method="post">
        用户名<input type="text" name="username">
        密码<input type="password" name="password">
        <button type="submit" >登录</button>
    </form>
</div>

4 解决方法

经检查 错误出在3.1的 successForwardUrl("/")中
使用 defaultSuccessUrl("/")替换即可

// 自定义登录页
        http.formLogin()
				.loginPage("/toLogin")
                .usernameParameter("username")
                .passwordParameter("password")
				.loginProcessingUrl("/login")
                .defaultSuccessUrl("/"); //将此处的successForwardUrl使用defaultSuccessUrl替换
                

5 错误原因

错误原因暂时不清楚 由于时间关系,所以暂且记录下。后续会深入了解问题出现的原因。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Spring Security中,可以使用以下方式自定义登录面: 1. 创建一个自定义登录面。 2. 配置Spring Security,指定自定义登录面的位置,绑定登录请求处理逻辑。 3. 配置Spring MVC,指定自定义登录面的路径。 以下是具体实现步骤: 1. 创建一个自定义登录面。 在Spring MVC项目的Web根目录下创建一个login.jsp面。 在面中提供用户名和密码输入框,并使用POST方式将表单提交到 /login 请求上。 2. 配置Spring Security,指定自定义登录面的位置,绑定登录请求处理逻辑。 在Spring Security配置文件中,使用formLogin()方法指定自定义登录面的位置。 并使用loginProcessingUrl()方法绑定登录请求处理逻辑,该方法指定登录请求的URL路径。 最后,使用loginPage()方法指定登录面的URL路径,该方法会重定向到自定义登录面。 @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .anyRequest().authenticated() .and() .formLogin() .loginProcessingUrl("/login") // 指定登录请求的URL .loginPage("/custom-login") // 指定登录面的URL .permitAll(); } } 3. 配置Spring MVC,指定自定义登录面的路径。 在Spring MVC配置文件中,配置视图解析器,指定自定义登录面的路径。 @Bean public InternalResourceViewResolver viewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/views/"); viewResolver.setSuffix(".jsp"); return viewResolver; } 当用户访问应用程序的任何受保护的URL时,由Spring Security拦截请求并跳转到自定义登录面。用户在登录面输入用户名和密码后,表单将被POST提交到指定的loginProcessingUrl上。Spring Security将验证用户的凭据,并根据验证结果决定是否授权用户访问请求的资源。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值