【问题标题】:Spring Security support local account and social accountSpring Security 支持本地账号和社交账号
【发布时间】:2016-07-29 11:39:21
【问题描述】:

按照本教程Petri article 我正在尝试使用 spring boot 创建相同的应用程序,但没有 hibernate,只有 Jdbc,因为我已经学习了 hibernate。

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

  1. 使用 spring security 和 jdbc 创建本地登录应用程序。
  2. 使用 spring social 登录并阅读 feed,就像 spring social 示例快速入门一样
  3. 使用社交信息创建本地帐户,使用社交帐户登录。

然后我尝试进一步修改它以支持本地用户。但是有一些问题我仍然无法解决。 这里是my source code

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

【问题讨论】:

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


    【解决方案1】:

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

    signin 和 auth 之间的区别在 4.1 和 4.2 章中解释。简要说明:

    因此,要通过以下方式启动提供商登录流程 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。您必须深入研究文档和示例。我建议从克隆和运行现有的演示和项目开始,找出您在配置中遗漏了什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-12
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 2018-07-29
      • 2017-10-02
      • 2020-07-31
      • 1970-01-01
      相关资源
      最近更新 更多