Firebase.resetPassword()密码有效期

时间:2016-03-05 16:39:32

标签: angularjs web firebase angularfire

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

https://www.firebase.com/docs/web/api/firebase/resetpassword.html

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

提前致谢

1 个答案:

答案 0 :(得分:1)

基本上你可以更改用户密码,然后手动通过电子邮件发送给他。所以当我们注册到你的应用程序时,它会按以下顺序显示:

username---
          Username
          Password
          Email
          UID

那么当用户点击resetPassword时你必须生成一个随机密码,并给他发一封电子邮件......所以首先让我们解决发送电子邮件的问题:

首先注册Mandrill

1. register for Mandrill to get an API key
2. load jQuery
3. use $.ajax to send an email

所以这就是它的布局:

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;
}

别忘了将它添加到您的脚本标记中:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

所以你可以发送电子邮件:

$.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);
 });

有关发送电子邮件部分here

的详细信息

如果您只是尝试使用firebase执行此操作,这是不可能的,正如frank在此处所说:How to extend lifetime of password, generated by ref.resetPassword()?