2015-09-25 45 views

回答

1

我更喜歡密碼重置而不是恢復,因爲Passoword是一個必須加密並保存在數據庫中的敏感數據,決不能從密碼中取得明文密碼,除非我知道更多信息關於你的要求我不能評論。

對於重置/恢復密碼,您可以通過LINK發送電子郵件給用戶,以重置郵件中的密碼或密碼本身。

要求用戶從視圖中註冊電子郵件ID並將其發送給控制器調用服務映射到/loginrecover的Controller,該服務將向用戶發送郵件。使用JAVA Mail api,請參考下面的代碼片段發送郵件。

public void sendMail(String emailId) 
    { 
     MimeMessage message = this.mailSender.createMimeMessage(); 
     MimeMessageHelper mimeHelper; 
     try { 
      mimeHelper = new MimeMessageHelper(message,true); 
      mimeHelper.setTo(emailId); 
      mimeHelper.setFrom("[email protected]"); 
      mimeHelper.setSubject("Password Reset"); 
      mimeHelper.setText("<html><body>hi,<br/><a href='http://yourdomain:8080/Context/newPassword/"+someHash+"/'> Click here</a> to reset password</body></html>",true); 
      mailSender.send(message); 
     } catch (MessagingException e) { 
      System.out.println("Error Sending email "+ e.getMessage()); 
     } 

    } 

someHash必須找出你的用戶,並確保它不能被他人猜到的一種獨特的方式,你可以使用SHA256散列技術吧。