0

今天我遇到了以下问题:

  1. 我在我的 Joobla 1.6 网站上注册了一个新用户
  2. 通过激活电子邮件中的链接激活帐户
  3. 以新用户身份登录后,我已将电子邮件更改为虚构的( foo@bar.bar )
  4. Joomla 的反应是:“好的,没问题,电子邮件似乎没问题,那就保存吧”

Joomla 唯一检查的两件事是电子邮件是否正确写入以及它是否被其他用户使用。

为什么 Joomla 不将相同的激活电子邮件发送到新电子邮件以便在用户的个人资料中更改它?有什么我应该知道的吗?

这看起来好像配置文件编辑组件中缺少那个非常重要的功能。

如何在不编辑核心文件的情况下使其工作?

编辑: 我写了一个插件来解决这个问题:http ://extensions.joomla.org/extensions/access-a-security/site-security/site-protection/18139

4

3 回答 3

2

好吧,如果您想要一种方法来解决这个问题,那么试试这个:

编写您自己的使用onBeforeStoreUser事件的身份验证插件。在这里,您可以在用户更改电子邮件地址时检查用户电子邮件是否正确验证。

如果您愿意,您可以停用用户的帐户,然后向他们发送带有链接的新激活电子邮件。查看 com_users 代码,了解在新用户注册和激活电子邮件发送方面如何处理注册。您几乎可以从那里复制代码。

您插件的示例代码:

onBeforeStoreUser($user, $isnew) {
  if (!$isnew) {
    // grab code from com_users to generate activation email
    // part of the code makes an activation sequence
    // sql to inject this seq into the users account
    $db = JFactory::getDBO();
    $db->setQuery('
      UPDATE #__users
      SET activation = '.$db->quote($activation_code)).'
      WHERE id='.$user->id.'
    );
    $db->query();
    // send activation email
  }
}
于 2011-07-14T16:18:49.883 回答
1

也许在处理新邮件之前验证旧邮件帐户也是一件好事。

解释:

我得到一个用户名和密码,我登录,我将邮件从真正的所有者更改为我的,我偷了帐户,现在可以用我的邮件激活它。

如果我们同时验证旧邮件和新邮件,我们保证新邮件是有效的,并且更改是由原所有者请求的。

于 2012-04-11T23:36:59.190 回答
-1

激活电子邮件就是这样 - 一种激活方法。这是为了满足美国等国家/地区的用户信息收集法律,在这些国家/地区有必要让用户在注册时确认他们拥有“此”电子邮件地址。这确保他们自己是签署他们的人。这是激活电子邮件的目的。

于 2011-07-11T12:08:53.400 回答