1

背景

我们的网站允许某人使用他们注册的电子邮件和密码登录。现在我们希望允许用户仅使用他们的 Facebook 身份进行注册(作为替代身份验证方法)。我们计划使用 Spring Social + Spring Security 3.1 来做到这一点

问题

无论您使用哪种身份验证提供商,网站中都有一个部分要求您输入密码。电子邮件注册用户不受此影响,但 Facebook 用户受此影响(因为他们没有密码)。他们需要以一种懒惰的方式生成一个(Facebook 用户第一次点击链接时),因为一小部分用户会使用这个功能(我们不希望所有 Facebook 用户在创建密码时都被打扰)登记)。

那么,你将如何建模呢?

例如:我们知道可以定义一个名为“REGISTERED_WITH_PASSWORD”的安全角色,并使这些页面仅可用于该角色。是否可以设置 Spring,当登录的“无密码”Facebook 用户尝试进入该页面时,将他重定向到密码创建页面,以便他们可以创建并重试?(而不是将其作为授权异常处理)。

还有其他想法吗?任何优雅的设计都会受到欢迎,无论它是否依赖于 Spring Sec 3.1 的特定内容。

谢谢,

4

1 回答 1

3

幼稚的实现思想,也许存在更好的方法:

  • 编写自定义过滤器并将其添加到springSecurityFilterChain
  • 仅对您想要的 URL 启用过滤器(例如手动检查 url)
  • 签入用户身份验证类型和“登录/密码已通过”标志并将没有标志的 facebook 用户重定向到登录/密码页面
  • 将“登录名/密码传递”标志保存到会话

SecurityContext保持不变,所以这种方法似乎对春天没有干扰。

编辑:格式化

于 2012-04-04T19:25:05.753 回答