自定义自动表单中的发布请求返回403

时间:2018-03-09 17:15:07

标签: java spring-mvc spring-security

尝试创建自定义 AuthenticationProvider 。现在只需添加println以供检查使用Spring这个类或不。就在那里开始奇怪的事情:

从官方文档中获取示例:

http
.authorizeRequests()
    .anyRequest().authenticated() 
    .and()
.formLogin()                      
    .and()
.httpBasic(); 

Spring执行我的自定义 AuthenticationProvider 。然后以自定义登录页面为例:

http
    .authorizeRequests()
        .anyRequest().authenticated()
        .and()
    .formLogin()
        .loginPage("/login")
        .permitAll();

查看:

form.ui.form(action="/login", method="post")
            h4.ui.dividing.header Autorisation
            .field
                label Login
                input(name="username" placeholder="Логин" type="text")
            .field
                label Пароль
                input(name="password" placeholder="Password" type="password")
            button.ui.button(type="submit") Submit

页面将会打开,但如果我们尝试按submit,它将返回403.Сustom AuthenticationProvider 不会返回任何内容。

1 个答案:

答案 0 :(得分:1)

启用Spring Security默认csrf选项。如果你发布没有csrf令牌,Spring Security会产生403禁止错误。

http
.authorizeRequests()
    .anyRequest().authenticated()
    .and()
.formLogin()
    .loginPage("/login")
    .permitAll()
    .and()
.csrf()
    .disabled();

或在表单中附加csrf标记。

https://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html#csrf-configure