当前位置: 首页 > 知识库问答 >
问题:

Spring oauth2登录-Google/Facebook工作,但也需要基本的基于表单的auth

高慈
2023-03-14

我有我的Spring项目与谷歌/脸书登录运行良好。

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
         .anyRequest().authenticated()
         .and()
         .oauth2Login();
    }
}
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/private").authenticated()
            .antMatchers("/accounts/**").hasAnyRole(Role.ADMIN,Role.MANAGER,Role.USER)
            .antMatchers("/books/**").hasAnyRole(Role.MANAGER,Role.USER)
            .and()
        .httpBasic()
            .and()
        .logout()
             .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
             .clearAuthentication(true)
             .deleteCookies("JSESSIONID")
             .logoutSuccessUrl("/loggedOut").deleteCookies("JSESSIONID")
             .invalidateHttpSession(true)
             .permitAll()
    }
}

但如何将两者结合起来呢?也就是说,用户可以用他们的用户名/密码对或他们的社交媒体帐户登录?

共有1个答案

聂风史
2023-03-14

您需要添加到您的序列中的一件事是:当用户通过social login登录时,您必须将该身份验证与您自己的身份验证(有效的会话)“交换”,这样您就可以像处理基于表单的登录一样处理您的配置(同样,不需要发出access_token)。

最好!

 类似资料:
  • 使用基于表单的JAAS、MySQL、Apache TomEE、JSP、Servlet 我知道如何配置基于表单的JAAS,当用户试图访问安全页面时,自动将用户重定向到登录页面。基本上,我已经为TomEE和MySQL配置了JDBC领域(在文件中),在中,我已经声明了、和。 然后,有以下登录表单: 而且,这对于在web.xml中的标记中声明的页面很好。 但是,我想有明确的访问一个页面,用户可以登录。那么

  • 根据,我使用基本和基于表单的身份验证配置了Spring Security。 我希望下的endpoint不要使用基于表单的安全性。之外的其他endpoint应使用基于表单的登录。我想要一个响应,发送给那些没有在下提供凭据的endpoint的任何调用。 更新:感谢卢克·泰勒在下面的评论,我想出了以下解决方案。 注意:此技术仅适用于Spring Security 3.1。 首先,我挑出。我们从不创建会话

  • 本文展示了如何根据不同的用户角色,在登录之后来重定向到不同的页面。 在 method-security项目的基础上,我们构建了一个role-base-login项目。 build.gradle 修改 build.gradle 文件,让我们的role-base-login项目成为一个新的项目。 修改内容也比较简单,修改项目名称及版本即可。 jar { baseName = 'role-bas

  • 我正在尝试使用GoogleSheets脚本根据工作表中的数据生成新的Google表单。我拥有的代码可以创建具有正确标题的新表单,但它不会使用表单中的任何其他信息填充表单:表单描述、问题、帮助文本等。我不知道我做错了什么。先谢谢你。 可编辑的工作表副本 代码如下:

  • 主要内容:链表插入元素,链表删除元素,链表查找元素,链表更新元素,总结《 什么是单链表》一节我们学习了如何使用 链表存储数据元素,以及如何使用 C 语言创建链表。 本节将详细介绍对链表的一些基本操作,包括对链表中数据的添加、删除、查找(遍历)和更改。 注意,以下对链表的操作实现均建立在已创建好链表的基础上,创建链表的代码如下所示: 从实现代码中可以看到,该链表是一个具有头节点的链表。由于头节点本身不用于存储数据,因此在实现对链表中数据的"增删查改"时要引起注意。 链

  • 我试图创建一个脚本,如果单元格包含但不完全匹配条件,它将自动删除该行。例如,如果单元格包含gmail.com,脚本将删除行,作为较大电子邮件的一部分 这两封yahoo电子邮件将被保存,因为它们不符合条件。但是,我不确定在编写脚本时使用适当的条件听写。这是我到目前为止所拥有的。 我会把a==,但这只会删除与gmail完全匹配的行。com。我将使用什么来代替==使其本质上成为一个包含条件的文本?