Java 如何在spring security中实现多表单登录和自定义请求登录
我有两台服务器: 服务器1:通过电子邮件和密码登录 服务器2:通过电话和密码登录 我想在spring security中使用两个服务器登录。我希望在spring security中使用urlJava 如何在spring security中实现多表单登录和自定义请求登录,java,spring,spring-boot,spring-security,Java,Spring,Spring Boot,Spring Security,我有两台服务器: 服务器1:通过电子邮件和密码登录 服务器2:通过电话和密码登录 我想在spring security中使用两个服务器登录。我希望在spring security中使用urlserver1/login和server2 lognserver2/login登录服务器1。我写的spring security看起来像: http.csrf().disable() .sessionManagement().sessionCreationPolicy(
server1/login
和server2 lognserver2/login
登录服务器1。我写的spring security看起来像:
http.csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.httpBasic().authenticationEntryPoint(authenticationEntryPoint)
.and()
.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginProcessingUrl("/server1/login")
.usernameParameter("email")
.successHandler(authenticationSuccessHandler)
.failureHandler(authenticationFailureHandler)
.and()
.formLogin()
.loginProcessingUrl("/server2/login")
.usernameParameter("phone")
.successHandler()
.permitAll();
但它不起作用
我想将loginProcessingUrl(“/server1/login”)=>移动到控制器并验证它(验证电子邮件和密码,搜索电子邮件并检查一些信息数据库)。它与服务器2相同。
将loginProcessingUrl(“/server2/login”)=>移动到控制器并验证它(通过电话和密码,搜索电子邮件并检查信息数据库)
=>可能吗
我有两个问题
loginProcessingUrl(“/server1/login”)时
spring通过AuthenticationSuccessHandler自动检测。谢谢我认为在同一配置中不能有多个formLogin。请使用单独的模式和顺序(例如,默认配置中的
/server1
(顺序=默认100)和新配置中的/server2
(顺序=50)添加一个新的/WebSecurity ConfigureAdapter
实现,类似这样的内容:这样我可以通过电话而不是电子邮件自定义表单登录,并且可以将url/登录更改为我的控制器。示例/server1/登录并验证它。这是可能的吗?仔细想想,您不需要单独实现websecurityConfigureAdapter
。我认为一个表单登录()
将起作用。您应该在登录表单中保留用户名和密码的通用名称,例如.usernameparmeter(“login\u id”).passwordParameter(“password”)
并验证电话或电子邮件(“login\u id”的值)在身份验证过程中。原因是spring安全筛选器使用了loginProcessingUrl
。