为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Boot 尝试渲染登录处理 url

Spring Boot 尝试渲染登录处理 url

慕尼黑8549860 2022-07-27 09:29:14
大家好,我正在尝试使用 spring boot 2 和 thymeleaf 3 制作自定义登录表单,应用程序有 2 个安全配置,一个用于移动应用程序用户,另一个用于餐厅,这是一个 Web 应用程序。我正在为餐厅端实现自定义登录表单,但是当登录表单时提交 spring 尝试查找 localhost:8080/{loginprocessingurl} 并导致 404 错误。以下是我的表单、控制器和安全配置:@Configuration    @Order(2)   // no order means order of config value is last    public static class RestaurantSecurityConfig extends WebSecurityConfigurerAdapter{        @Override        protected void configure(HttpSecurity http) throws Exception{            http.csrf().and()            .antMatcher("/restaurant/**")  //antmatcher tekil şekilde urlleri farklı configler için gruplamada kullanılır            .authorizeRequests()                .antMatchers("/assets/**", "/webjars/**","/static/**").permitAll()                .anyRequest().hasRole("RESTAURANT")                .and()            .formLogin()                .loginPage("/login")                .loginProcessingUrl("/restaurant/reslogin")                .failureUrl("/restaurant/login?error")                .defaultSuccessUrl("/restaurant/tables",true)                .permitAll()                .and()            .logout()            .logoutUrl("/restaurant/logout")            .deleteCookies("JSESSIONID")            ;        }当我查看源页面时,我看到 thymeleaf 没有注入 csrf 令牌输入。我使用 thymeleaf extras springsecurity 版本 3.0.4,如果我在表单中编写 csrf 输入<input  type="hidden"  th:name="${_csrf.parameterName}"  th:value="${_csrf.token}" />,它给我这个错误:EL1007E:在null上找不到属性或字段'parameterName'事情是我知道spring应该在背面处理登录处理url并进行身份验证(我实现了UserDetailsService并覆盖WebSecurityConfigurationAdapter 的 configureGlobal 方法我是如何正确知道的,因为移动应用程序请求运行良好(另一个 @Configuration 类))而是在成功 url 上重定向我,它尝试呈现该登录处理 url。另一件事当我不使用自定义登录处理 url 而是使用默认 /login 发布登录表单时,它说 405 方法不允许,但我在网络上尝试的所有其他示例都是这样工作的,甚至在开始 Spring Boot K.Siva Prasad Reddy 的 2 本书,我做了表单登录前。就像我上面所说的那样写,就像魅力一样!每个依赖版本都是一样的!我一直在处理这 2 天,到处搜索,但找不到解决方案,所以每一个想法和建议都会受到赞赏。
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

我解决了我的问题,这是由于其他配置类中没有相同的 RequestMatcher 造成的,我的错。

http
    .antMatcher("/user/**")

因此,如果任何 Spring Boot 爱好者遇到同样的问题,请确保您为单独的 url 映射了 2 个配置。


查看完整回答
反对 回复 2022-07-27
  • 1 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信