问题
我正在尝试用springboot构建一个登录页后端,它允许使用存储在数据库中的凭据(使用userdetails/userdetailsservice)进行身份验证,并使用google帐户构建oauth2,本质上是这样的后端(https://prnt.sc/11krtsi). 我面临的问题是,我无法创建像自定义页面这样的东西,该页面在某些路径(如/login)上封装这两种身份验证方法。我最多只能在同一个页面上同时使用默认的spring表单和默认的oauth输入(照片:https://prnt.sc/11kt2fw ; https://prnt.sc/11ktdci )但它们也有问题,比如在两个不同的地方显示警报。后端部分工作得很好,从这个意义上说,我可以登录这两个只有默认的spring表单。
我要做的是
我想创建一个与spring boot后端绑定的小型自定义表单,它允许类似的功能(检查凭据,在发送错误凭据或禁用用户或注销时显示警报),但外观不同(因此类似于:https://prnt.sc/11krtsi).
另外,我希望登录页面位于不同的端点(类似于api/v1/login)。
我试过的。
-我曾尝试创建一个由Map到api/v1/login的控制器绘制的新视图,并从安全配置中删除登录表单,但正如预期的那样,它破坏了登录验证部分,因为我无法更改配置中的端点。我以前想过让userdetailsservice登录到api/v1/login/auth,google auth登录到/api/v1/login/googleauth,重定向到给定的googleapi链接。
-我还尝试为userdetailsservice login.formlogin()创建一个自定义的登录表单,而不是链接它.oauth2login(),但是我的oauth输入没有显示出来(.formlogin()的样式和显示非常完美,登录验证凭证正确,显示通知等)。
我有问题
如何在渲染视图上使用多个登录方法(https://prnt.sc/11krtsi)有什么好办法?
(x/y)如何将.formlogin()更改为在自定义终结点上可用,并将ouath2更改为另一个终结点,以便从具有指向两个终结点的链接的公共窗体重定向?
此时,我的websecurityconfig(只提供一个带有默认表单(formlogin,oauth2)的/login页面)如下所示:
@Configuration
@AllArgsConstructor
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
private final UserService userService;
private final BCryptPasswordEncoder bCryptPasswordEncoder;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/api/v*/**", "/css/**")
.permitAll()
.anyRequest().permitAll()
.and()
.oauth2Login().defaultSuccessUrl("/api/v1/index")
.and()
.formLogin().defaultSuccessUrl("/api/v1/index")
.and()
.logout()
.invalidateHttpSession(true)
.clearAuthentication(true);
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(daoAuthenticationProvider());
}
@Bean
public DaoAuthenticationProvider daoAuthenticationProvider(){
DaoAuthenticationProvider provider =
new DaoAuthenticationProvider();
provider.setPasswordEncoder(bCryptPasswordEncoder);
provider.setUserDetailsService(userService);
return provider;
}
}
还有一件事可能是重要的是,我需要集成这个后端部分与前端完成的Angular 。我正在尝试创建这个自定义表单,以便我知道当我需要将我们的Spring Boot后端部分与前端集成时需要做什么。
非常感谢您抽出时间阅读我的问题。任何形式的反馈都非常感谢。
暂无答案!
目前还没有任何答案,快来回答吧!