2016-03-05 4 views
-1

Я использую angularJS и firebase в качестве backend для создания своего простого веб-приложения. Когда вызывается метод .resetPassword(), пользователю отправляется электронное письмо с временным паролем, поэтому он может войти в приложение. Согласно следующему ресурсу, срок службы временного пароля 24 часа:Firebase.resetPassword() срок службы пароля

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

Итак, у меня есть вопрос - что происходит после того, как истечет временный пароль? Это просто отбрасывается и старый пароль может быть использован снова? ..

Заранее спасибо

+0

Да, есть обходной путь для этого. . – amanuel2

+0

См. Http://stackoverflow.com/questions/32846971/how-to-extend-lifetime-of-password-generated-by-ref-resetpassword?rq=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 = "abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 
     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’: ‘[email protected]’, 
     ‘to’: [ 
      { 
      ‘email’: ‘[email protected]’, 
      ‘name’: ‘RECIPIENT NAME (OPTIONAL)’, 
      ‘type’: ‘to’ 
      }, 
      { 
      ‘email’: ‘[email protected]’, 
      ‘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, что не представляется возможным, как здесь сказано откровенны: How to extend lifetime of password, generated by ref.resetPassword()?

+0

Вы можете только изменить пароль, вызвав ['changePassword()'] (https://www.firebase.com/docs/web/api/firebase/changepassword.html), который требует, чтобы вы знали старый/текущий пароль , Поэтому я не думаю, что это применимо. –

+0

Это применимо ... Вы правильно прочитали мою логику @FrankvanPuffelen? Пользователь сохраняет пароль при регистрации и может играть с ним, как я уже упоминал выше. И да, вы можете сделать changePassword(), а в обратном вызове sucess получите пароль, но мой - это еще один способ ... – amanuel2

+0

Вы предлагаете сохранить пароль в базе данных (например, под '/ users/$ uid')? В этом случае поток может работать. Но я бы не рекомендовал хранить пароль пользователя в вашей базе данных. Одной из причин использования Firebase Authentication является то, что вам не нужно брать ответственность за сохранение пароля пользователя. –

Смежные вопросы