我有一个具有默认级别Spring安全性的Spring Boot应用程序,并且我将 auth.userDetailsService(customuserservice)用于用户身份验证部分。除此之外,我们使用Google登录按钮。我的配置文件是
`http
.authorizeRequests()
.antMatchers("/","/securitylogin").permitAll()
.antMatchers("/SecondMainPage")
.hasAnyRole("SUPERADMIN","ADMIN","USER")
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginPage("/securitylogin") //login
.usernameParameter("username") //optional
.passwordParameter("password") //optional
.defaultSuccessUrl("/loggedin")
.permitAll()
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/")
.invalidateHttpSession(true)
.permitAll();`
身份验证部分正在按预期方式运行,但Google登录部分无法正常运行。在Google登录后,我收到了电子邮件,并从服务器获取了他的详细信息,然后重定向到一个控制器,但是该控制器重新加载了n次。我不知道为什么单一方法一次又一次地重新加载。
http.antMatcher(“ / loginwithgoogle / **”)。anonymous();
如果我使用上面的行,则Google登录名部分运行正常,但是普通登录身份验证无法访问。
web.ignoring()。antMatchers(HttpMethod.POST,“ / loginwithgoogle”);
我也尝试了上面的方法,但是同一控制器一次又一次地重新加载了n次。请帮助我继续前进。我还有什么想念的吗?还是我走错了路?
答案 0 :(得分:0)
实际上,我之前尝试过相同的事情,但是不知道为什么我没有成功,但是以下事情对我有用,并且如果对任何人有帮助,也会更新相同的内容。
http
.authorizeRequests()
.antMatchers("/loginwithgoogle/**").anonymous() //works this order
.anyRequest().authenticated() // with this line too
.antMatchers("/","/securitylogin").permitAll()
我不知道是否会有单独的命令,但是我分别尝试了anonymous(),但没有成功。以上工作完美。
更新11.09.2018 Google登录正常,但是角色不起作用(即,用户可以访问管理页面,并且异常处理无法正常工作)。