Spring Security支持本地帐户和社交帐户

时间:2016-04-08 09:07:29

标签: facebook spring-mvc spring-security spring-boot spring-social

遵循本教程Petri article 我试图用spring boot创建相同的应用程序,但是没有hibernate,只是Jdbc,因为我已经学习了hibernate。

我先在this tutorial创建了一个项目基础, 到目前为止,我理解以下内容:

  1. 使用spring security和jdbc创建本地登录应用程序。
  2. 使用spring social and read feed登录,就像spring social sample quickstart一样
  3. 使用社交信息创建本地帐户,使用社交帐户登录。
  4. 然后我尝试进一步修改它以支持本地用户。但是有一些问题我仍然无法解决。 这是my source code

    1. 我查看了Petri的项目,无法找到任何处理登录POST的控制器,这是否意味着正确配置弹簧安全性,它为我们处理它? 我的应用程序需要我明确地编写处理登录POST的方法,这是我从一些春天的社交示例中学到的。
    2. 我的项目运行不正常,如果我与注册的本地用户一起本地,它确实呈现/ home,但是url显示/ login。如果我再次请求/ home,它会反弹并呈现登录页面。 如果我使用社交用户登录,我正在尝试Facebook,它确实将我重定向到facebook登录,登录后,给我403错误。 我认为这是由弹簧安全性未正确配置引起的,我还没弄清楚如何。
    3. 春季社交样本使用带有/ signin / facebook的表单POST,隐藏字段名称'范围'它定义了facebook范围,例如email,user_friends,user_posts,user_about_me。 但Petri的样本使用的是不带任何范围的超链接/ auth / facebook。 / signin / facebook和/ auth / facebook有什么区别?如何使用超链接定义范围?我需要这样做吗?

1 个答案:

答案 0 :(得分:0)

请仔细阅读官方文档:spring-social reference 它会解释你的一切。

在第4.1和4.2章中解释了signin和auth之间的区别。简言之:

  

因此,通过启动提供商登录流程   SocialAuthenticationFilter,您只需提供一个链接即可   " / AUTH / {providerid}"在网页上。

和singin用于ProviderSignInController。

关于子弹号1.是的,这部分代码告诉spring为你设置一些东西:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                //Configures form login
                .formLogin()
                    .loginPage("/login")
                    .loginProcessingUrl("/login/authenticate")
                    .failureUrl("/login?error=bad_credentials")

很抱歉,不能说2号。您将不得不深入了解文档和示例。我建议从克隆和运行现有的演示和项目开始,找出你在配置中遗漏的内容。