我有一个拼车网站,用户可以通过我的数据库登录,一切正常。
登录后,用户可以发布拼车广告。
现在我需要用户通过Facebook登录。如何处理这种情况?
案例1:用户未在我的数据库中注册并使用了Facebook凭据。我可以显示只读的页面,但现在说用户想发布广告,在这种情况下该怎么办?
我的数据库的结构使得postAd表的user_id为外键,所以在这种情况下我应该添加一个带有该email_id的用户和一个虚拟密码以允许它们发布?或者这些场景是如何处理的?
案例2:如果用户使用Facebook登录,我是否需要在我的数据库中搜索该电子邮件ID才能找到该用户?
我正在使用Spring Security。
这样的网站一般如何运作?
感谢。
答案 0 :(得分:2)
查看Spring Social和Spring Social Facebook个项目。他们这样做:
一般的想法:你可以有多个提供者(FB,Twitter等等),但无论如何,每个社交个人资料都将与一些Spring Security用户匹配(例如,它将用于授权)。如果它们与userId匹配,那么您可以为多个社交帐户拥有一个Spring Security用户。 此方法的优点是您可以更好地控制用户配置文件(即使FB帐户处于活动状态,您也可以禁用本地用户帐户)。您可以使用java代码中的Facebook API。
作为选项2,您可以通过JavaScript进行FB登录。然后手动为案例1和案例2实现两个功能(例如通过自定义过滤器)。它可能更轻巧(取决于您需要什么功能)。
答案 1 :(得分:1)
Facebook Oauth为每个用户提供唯一的用户ID。所以,如果用户使用facebook登录,最好存储用户的详细信息,例如id,name,email等。在user table.so中,你可以使用该userid作为主键...如果用户已经存在jsut跳过此部分并将其带到帖子页面。