Java Spring安全性:使用自定义验证器和自定义登录页面
我尝试使用Spring Boot安全性执行第一步 我尝试将自定义验证器与自定义登录页结合起来,但我不确定如何将它们结合起来。 这两种方法都很有效 我的自定义身份验证程序(Auth) 我的/login处理程序(login) 如果我没有使用自定义登录页(.loginpage等,则我的自定义验证器正在使用,并且内置登录页确实会出现 如果我使用的是自定义登录页面,那么将使用我的custom login.jsp,但我看不到自定义验证器的用法。但是调用了/login的处理程序 那么,定制验证器和custon登录页面的组合是否应该开箱即用 我是否需要将它们粘在一起(可能在登录处理程序中) 编辑 login.jspJava Spring安全性:使用自定义验证器和自定义登录页面,java,spring,spring-boot,spring-security,Java,Spring,Spring Boot,Spring Security,我尝试使用Spring Boot安全性执行第一步 我尝试将自定义验证器与自定义登录页结合起来,但我不确定如何将它们结合起来。 这两种方法都很有效 我的自定义身份验证程序(Auth) 我的/login处理程序(login) 如果我没有使用自定义登录页(.loginpage等,则我的自定义验证器正在使用,并且内置登录页确实会出现 如果我使用的是自定义登录页面,那么将使用我的custom login.jsp,但我看不到自定义验证器的用法。但是调用了/login的处理程序 那么,定制验证器和custon
<html>
<body>
MyLogin
<form action="/security_check" method="post">
username<input type="text" id="username" name="username"/>
<br/>
password<input type="password" id="password" name="password"/>
<br/>
<input type="submit" value="login"/>
</form>
</body>
</html>
您的自定义验证器配置正确。问题在于您的自定义登录页面 因此,您的自定义登录页面应该至少包含一个带有两个字段的表单:用户名和密码,以及一个url的POST操作,比如“/security\u check”,spring security将处理用户名和密码。在spring安全配置中,您将其配置为loginProcessingUrl,如下所示:
.formLogin().loginPage("/login").loginProcessingUrl("/security_check").permitAll();
当然,您也可以像现在这样指定username参数、password参数
usernameParameter("username").passwordParameter("password")
您缺少的部分是loginProcessingUrl,它将您的自定义登录页面与spring security挂钩,它将使用您的自定义验证器对用户进行身份验证。发现只有在登录页面中有隐藏信息时,它才起作用
<input type="hidden"
name="${_csrf.parameterName}"
value="${_csrf.token}"/>
在配置中-仅此而已
不知道为什么,但我接受了
我从:
我是否需要自己实现安全检查处理程序?需要表单操作指向安全检查吗?不,您不需要toI添加my login.jsp和更改安全配置。自定义验证器仍然没有调用:-(然后找不到登录页。我有jsp的spring引导配置。找到了我的登录页,但没有调用自定义验证器。对/security\u check的请求在My browser-logs.Hmm之后发送,您能从配置中删除:antMatchers(“/sec*”).permitAll()吗?
http.authorizeRequests ()
.antMatchers ("/sec*").permitAll ()
.anyRequest ().authenticated ()
.and ()
.formLogin ().loginPage("/login").loginProcessingUrl("/security_check")
.permitAll ();
.formLogin().loginPage("/login").loginProcessingUrl("/security_check").permitAll();
usernameParameter("username").passwordParameter("password")
<input type="hidden"
name="${_csrf.parameterName}"
value="${_csrf.token}"/>
formLogin ().loginPage("/login")