Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Firebase.resetPassword()密码生存期_Angularjs_Web_Firebase_Angularfire - Fatal编程技术网

Angularjs Firebase.resetPassword()密码生存期

Angularjs Firebase.resetPassword()密码生存期,angularjs,web,firebase,angularfire,Angularjs,Web,Firebase,Angularfire,我使用angularJS和firebase作为后端来创建我的简单web应用程序。 调用.resetPassword()方法时,会向用户发送一封包含临时密码的电子邮件,以便用户登录应用程序。 根据以下资源,临时密码的生命周期为24小时: 所以,我有一个问题-临时密码过期后会发生什么?它只是被丢弃,旧密码可以再次使用吗 提前感谢基本上你可以更改用户密码,然后手动通过电子邮件发送给他。。因此,让我们假设当他们注册到您的应用程序时,它将按照以下顺序进行: username--- U

我使用angularJS和firebase作为后端来创建我的简单web应用程序。 调用.resetPassword()方法时,会向用户发送一封包含临时密码的电子邮件,以便用户登录应用程序。 根据以下资源,临时密码的生命周期为24小时:

所以,我有一个问题-临时密码过期后会发生什么?它只是被丢弃,旧密码可以再次使用吗


提前感谢

基本上你可以更改用户密码,然后手动通过电子邮件发送给他。。因此,让我们假设当他们注册到您的应用程序时,它将按照以下顺序进行:

username---
          Username
          Password
          Email
          UID
因此,当用户单击resetPassword时,您必须生成一个随机密码,并向他发送电子邮件。。。因此,首先让我们来解决发送电子邮件的问题:

首次登记

这就是它的布局方式:

function randomPassword(){
    var length = 8,
        charset = "abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
        retVal = "";
    for (var i = 0, n = charset.length; i < length; ++i) {
        retVal += charset.charAt(Math.floor(Math.random() * n));
    }
    return retVal;
}
有关发送电子邮件部分的更多信息


如果您试图仅使用firebase执行此操作,这是不可能的,正如frank在此处所说:

是的,这有一个解决方法。请参阅,一旦密码重置令牌过期,它将无法再使用。就我所知,创建密码重置令牌及其过期时间都不会对现有密码产生任何影响。@FrankvanPuffelen-因此,当通过电子邮件发送令牌时,它将作为附加密码,而旧密码仍然可以使用,对吗?您只能通过调用,这要求您知道旧/当前密码。所以我认为这不适用。这确实适用。。。你读对我的逻辑了吗@FrankvanPuffelen?用户在注册时存储密码,并可以像我上面提到的那样使用它。。是的,您可以执行changePassword(),并在success回调中获取密码,但我的只是另一种方式……您是否建议将密码存储在数据库中(例如,在
/users/$uid
下)?在这种情况下,流可以工作。但我不建议将用户密码存储在数据库中。使用Firebase身份验证的原因之一是,您不必负责存储用户的密码。这就是我说的“是”。。还有你的权利。。您可以向用户询问密码,然后执行checkPassword();,检查密码是否正确,然后你可以得到他想要更改的新密码,并按照上面@FrankvanPuffelenThank you,@Dsafds提出的计划进行详细回复:)但是,我不需要为我的应用程序实现任何附加功能,只想了解令牌过期后会发生什么。实际上,将数据存储在数据库中似乎是一种不太安全的方法。干杯!
function randomPassword(){
    var length = 8,
        charset = "abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
        retVal = "";
    for (var i = 0, n = charset.length; i < length; ++i) {
        retVal += charset.charAt(Math.floor(Math.random() * n));
    }
    return retVal;
}
$.ajax({
  type: “POST”,
  url: “https://mandrillapp.com/api/1.0/messages/send.json”,
  data: {
    ‘key’: ‘YOUR API KEY HERE’,
    ‘message’: {
      ‘from_email’: ‘YOUR@EMAIL.HERE’,
      ‘to’: [
          {
            ‘email’: ‘RECIPIENT_NO_1@EMAIL.HERE’,
            ‘name’: ‘RECIPIENT NAME (OPTIONAL)’,
            ‘type’: ‘to’
          },
          {
            ‘email’: ‘RECIPIENT_NO_2@EMAIL.HERE’,
            ‘name’: ‘ANOTHER RECIPIENT NAME (OPTIONAL)’,
            ‘type’: ‘to’
          }
        ],
      ‘autotext’: ‘true’,
      ‘subject’: ‘Password generated’,
      ‘html’: ‘This is your Newly generated password’ + randomPassword
    }
  }
 }).done(function(response) {
   console.log(response);
 });