2010-11-01 14 views
0

我正在寻找一些关于实现支持多种登录方法的应用程序的策略建议。建议在Web应用程序中使用多种登录方法

事实上,我已经有大部分工作。在我的应用程序中,我允许用户使用传统方法注册和登录:由我管理的帐户,我提供所有用户管理功能,例如登录,注销,注册,激活电子邮件,重置密码,密码更改,编辑电子邮件地址等。

但是,用户也可以使用他们的Twitter帐户注册并登录。系统将让用户在Twitter上进行身份验证并授权我的应用程序访问其帐户,然后Twitter将重定向到我的应用程序,并且我将获得Twitter用户名。目前,如果我不知道该用户名,我会在我的数据库中创建它。如果我知道,但它是一个不同的帐户类型(本地帐户),我会抛出一个错误。

基本上,当前用户必须在创建帐户时选择一种登录方法并坚持下去。有两种方法,我可以看到改善的情况:

允许多个登入方法

用户将有一个帐户,但在登入的多种方式让我们假设用户有一个名为“本地帐户。 joedirt“,与电子邮件地址”[email protected]“相关联。接下来,该用户不使用本地方法登录,而是选择Twitter方式。在Twitter上,他也被称为“joedirt”。

这里的问题是,从Twitter我只得到他的用户名。如果仅通过名称匹配我可以登录到本地帐户,这将是一个主要的安全漏洞。

我在这里做什么?询问用户使用其他方法登录他的电子邮件地址?这将是确保这涉及同一用户的唯一方法,对吗?

只允许一个登入方法,但要选择一个在任何时间的能力

另一种方法可以让用户一次只能使用一个登入方法,但该选项来设置此作为首选项,并在帐户创建后更改。两种方案可以展开:

  • 从本地登入方法第三方登入方法。由于我无法从第三方登录中获取电子邮件地址,我将如何将本地帐户链接到第三方帐户?同样,用户名匹配太弱,对吧?
  • 从第三方登录方法到本地方法。一个不太可能的事件,我是否应该支持?

对不起,长话短说。我对最好的方法是什么以及每种情况会产生什么后果都有一点心理障碍。

回答

1

如何让用户在她已登录时将其帐户“链接”到其他登录方法?这样,如果第三方供应商仅提供有限的信息(例如Twitter用户名),则这不会成为问题。

无论哪种方式,我建议你为每个用户生成一个唯一的本地ID,而不是在本地用户名与第三方dito相冲突时抛出错误。将用户和她的登录方法视为不同(但相关)的概念。

+0

谢谢,我的确很深,所以我需要一个清晰,简单的答案。我认为在登录时允许连接其他帐户是非常有意义的。它是安全的,允许提供者之间的名称变化,并且不难实现。 – Ferdy 2010-11-02 09:25:42

相关问题