【问题标题】:Authenticate User via a e-mailed link通过电子邮件链接验证用户
【发布时间】:2011-07-18 16:21:51
【问题描述】:

我对用户身份验证还很陌生,但是已经在 PHP 中构建了一些标准的用户身份验证过程。为了达到这一点,我的任务是构建一个系统,我们可以向用户发送大量电子邮件,其中包含一个链接,用户可以单击该链接并直接登录到系统。

我可能会使用 codeigniter 来构建它。如果有人可以提供一些关于遵循程序的指导或一些关于此的教程,那将非常有帮助。注意:如果它们不是特定于 codeigniter 的,那完全没问题。

【问题讨论】:

标签: php codeigniter authentication


【解决方案1】:

执行此操作的最简单方法是根据用户名和某种盐生成哈希,然后在电子邮件中放置一个类似http://some.url/loggedin.php?email=<email>&hash=<hash> 的链接,这样电子邮件就可以用来查找记录在数据库中很容易并且可以比较哈希。

希望有帮助

【讨论】:

  • 是的,这就是我从阅读中得到的。只是想知道是否有人有一个好的教程或代码点火器。谢谢!
  • 所以我只是想澄清一下这个说法。我需要做的就是创建一个 salt 并将其与数据库中的用户相关联,然后将其放入一个 URL 中,其中包含一些我可以引用用户的信息?
  • @James Parker 是的,您可以这样做,或者您可以对所有用户使用相同的盐。这只是为了阻止人们太容易使用别人的电子邮件
【解决方案2】:

我以前做过!我有一个包含以下字段的成员表:

  `username` varchar(20) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `firstname` varchar(255) NOT NULL,
  `lastname` varchar(255) NOT NULL,
  `birthday` int(11) NOT NULL,
  `status` varchar(20) NOT NULL,
  `regDate` int(11) NOT NULL,
  `lastLogin` int(11) NOT NULL,
  PRIMARY KEY (`username`)

当客户尝试注册时,您必须提供他们的usernamepasswordemailfirstnamelastnamebirthday 然后在表中插入一条记录!但将状态设置为'pending',并将带有哈希用户名的电子邮件发送到包含类似http://www.mysite.com/signup.php?id=XXXXXXXXXXXXXXXX(hashed username)这样的url的电子邮件

您必须阻止登录状态为“penidng”的用户

当用户回来但她/他发送到电子邮件的 URL 检查您的表是否已验证是否可以将状态更新为例如“正常”时,您可以在将来使用状态来阻止用户并设置状态如果要阻止用户,则阻止

【讨论】:

    猜你喜欢
    • 2011-03-06
    • 2011-03-15
    • 2014-08-17
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多