在应用程序中禁用谷歌登录的弹簧安全性

Posted

技术标签:

【中文标题】在应用程序中禁用谷歌登录的弹簧安全性【英文标题】:Disabling spring security for google login in application 【发布时间】:2018-12-16 17:45:24 【问题描述】:

我有一个具有默认级别 spring 安全性的 spring boot 应用程序,并且我正在使用 auth.userDetailsS​​ervice(customuserservice) 作为用户身份验证部分。除此之外,我们正在使用谷歌登录按钮。我的配置文件是

`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();`

身份验证部分按预期工作,但谷歌登录部分没有。谷歌登录后,我收到电子邮件并从服务器获取他的详细信息并重定向到一个控制器,但控制器重新加载了 n 次。我不知道为什么单个方法会一次又一次地重新加载。

http.antMatcher("/loginwithgoogle/**").anonymous();

如果我使用上述行,Google 登录部分工作得非常好,但正常的登录身份验证无法访问。

web.ignoring().antMatchers(HttpMethod.POST, "/loginwithgoogle");

我也尝试了上述方法,但同一个控制器一次又一次地重新加载 n 次。请帮助我继续前进。我还有什么遗漏或者我走错路了吗??

【问题讨论】:

【参考方案1】:

实际上我之前尝试过同样的事情,但不知道为什么我没有成功,但以下事情对我有用,如果对任何人都有帮助,则更新相同。

http
            .authorizeRequests()
            .antMatchers("/loginwithgoogle/**").anonymous() //works this order
            .anyRequest().authenticated() // with this line too
            .antMatchers("/","/securitylogin").permitAll()

我不知道是否会有单独的订单,但我单独尝试了匿名()但没有奏效。以上工作完美。

更新 11.09.2018 Google 登录工作正常,但角色无法正常工作(即)用户可以访问管理页面并且异常处理无法正常工作。

【讨论】:

以上是关于在应用程序中禁用谷歌登录的弹簧安全性的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用某些资源路径的弹簧安全性

使会话弹簧安全性无效

如何在弹簧安全认证登录中获取用户输入的用户名和密码值

禁用弹簧安全不起作用[重复]

弹簧安全 3.1 +JSF 2.0 。 ManagedBeans 中注释方法的问题?

如何在某个弹簧配置文件中禁用飞路?