【问题标题】:Web Application Authentication design problemWeb 应用程序身份验证设计问题
【发布时间】:2011-06-01 08:04:05
【问题描述】:

想知道是否可以就解决此身份验证问题的最佳方法获得一些建议。

我有一个商店网络应用程序,由于商店的性质,任何用户都必须经过身份验证才能查看或使用它。所有用户都可以通过一个登录表单访问商店。

有 4 个级别的用户、超级用户(我)、店长、店员和客户。

我的问题是为每种类型的用户使用哪种类型的身份验证,应该基于电子邮件吗?还是基于某种用户名?

一位商店经理将来到我们的网站,并创建一家新商店,我很高兴他们应该使用电子邮件地址和密码进行身份验证。然后,商店经理将为商店工作人员和顾客创建帐户。对于客户,我很高兴他们使用电子邮件地址和密码进行身份验证。但是我应该为商店工作人员使用什么?我认为他们不适合将个人电子邮件地址用于纯粹专业的帐户,您怎么看?此外,我可以预见经理可能会创建一个工人帐户,保持登录状态,并且所有工人都将使用这个帐户,所以再次使用电子邮件地址是不合适的。

所以这些是我能想到的解决方案,但都有问题:

商店经理创建具有用户名和密码的商店工作人员帐户。这样做的问题是,因为对网站的所有访问都是通过一次登录,他们可能会花费很长时间来寻找尚未被使用的用户名。

当一个商店工作人员被创建时,他们被分配了一个唯一的登录 ID,例如 0002014,以及一个密码,这可以用来进行身份验证。这样做的问题是登录 ID 很难记住。

我还考虑过以某种方式与商店名称结合使用的用户名(这是唯一的),但想不出一种优雅的方式来使它工作,例如,它看起来不像电子邮件地址。

有人对以上内容有偏好吗?或者希望可以提出更好的解决方案。感谢阅读。

【问题讨论】:

  • 你真的需要解释登录吗?让用户用他喜欢的任何东西填充它。也许这听起来太具有革命性了,但有时你可以只使用密码。
  • 只有密码?没门。使用蛮力更容易

标签: authentication architecture login


【解决方案1】:

好问题。使用电子邮件对员工来说也是一个很好的解决方案。原因是

  1. 现在您可以获得很多免费的电子邮件帐户。因此,不想使用个人电子邮件的员工可以创建一个并使用。

  2. 如果门店经理想为所有人使用一个帐户,那么他可以创建一个通用电子邮件并使用。

  3. 如果我们使用电子邮件,可以快速实现重置/忘记密码。

  4. 与用户名和电子邮件的混合相比,易于检查用户名的可用性。

  5. 由于是同一个页面登录,如果邮箱是唯一的,很容易得到登录人的角色。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    我现在使用的大多数基于网络的系统往往是基于用户名和密码的,但如果我没记错的话,也有不少使用电子邮件...

    还有一点,如果您仔细考虑使用哪些详细信息进行身份验证,您还应该考虑其他与身份验证相关的场景;这些天我访问的很多网站都会为您记住登录详细信息 - 以至于我不记得它们是基于用户名还是基于电子邮件。

    电子邮件的好处在于它是独一无二的。我认为“强迫”人们使用电子邮件没什么大不了的——这取决于他们使用哪一个。如果他们需要一个工作相关帐户的电子邮件地址,那么它应该是一个工作相关的电子邮件地址 - 但这是他们的问题。

    另一个方面是您使用的平台;我很确定 ASP.NET 的开箱即用角色和成员资格提供程序默认使用用户名进行登录。因此,如果您利用现有框架,可能会为您做出这种决定。

    最后,就不同的方法而言,还有联合身份验证系统/提供程序,例如您可以使用的 OpenID - 因此您甚至根本不需要编写大量用户/安全管理内容 - 而且它如果用户可以重复使用他们已经熟悉的一组凭据,他们会更容易。我还没有看过它,但我认为可能有等价物可以登录像你雅虎/谷歌/FaceBook帐户这样的用户。

    【讨论】:

    • 阿德里安的一些优点,特别是关于强迫他们使用电子邮件地址。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2018-08-11
    • 2012-09-09
    相关资源
    最近更新 更多