我正在使用spring-social开发一个应用程序,允许用户通过Facebook连接而根本没有注册,只需单击连接按钮即可登录。
我通过cookie跟踪用户,并使用RESTful API代表用户拨打电话。如果用户未登录,则oauth异常将重定向到登录页面,他需要与Facebook连接 - 这是服务端。
还有一个网站(或仪表板),允许用户通过网络浏览器连接,查看一些统计数据并管理他的个人资料。
我想为网站强制执行相同的注册逻辑。
即。没有人可以访问页面,如果他没有经过身份验证(即发送一个有效的cookie请求)。
使用Spring Social和Spring安全性在所有资源上强制执行此操作的最佳方法是什么? (记住,没有用户/通行证,只有cookie)
P.S。我在Spring-social快速启动示例的基础上构建了我的项目。这个项目有一个HandlerInterceptorAdapter,它确保所有请求都通过该适配器来检查用户提供的cookie是否在数据库中,如果它是使用用户信息设置SecurityContext并继续。我想重新使用此适配器来进行网站登录缺陷。
TNX!
答案 0 :(得分:1)
您可以使用SpringSecurity保护所有网站网址。如果用户未经过身份验证,则会将其重定向到登录页面。在登录页面上,您可以放置SpringSocial注册按钮(而不是通常的登录表单)。点击此按钮后,用户将被重定向到Facebook。成功验证后,它将被重定向到您的应用程序。 SpringSocial可以自动通知SpringSecurity用户已经过身份验证。因此,该用户将能够毫无问题地使用所有网站URL。
编辑。通常您需要允许登录页面上的所有用户访问。在您的情况下,您还需要为 ProviderSignInController ( / signin )执行此操作。