2017-05-15 6 views
0

モバイルの確認用にApiを作成しましたが、ロジックを入れたい 4時間後にotpを検証しようとするユーザーを制限できます。私は 2つのApisを作成しました最初の1つはユーザーにotpを送信し、入力 パラメータは携帯番号です。 OTPを比較することにより、携帯電話番号がユーザによって挿入され、それがここにあなたの非答えを与えるOTPgenerationの4時間後にモバイルをOTPで確認する方法を制限する方法

@RestController 
@RequestMapping("/api/v1") 
public class MobileController2 { 


    private String To = null; 
    OtpGenerator otp = new OtpGenerator(); 
    @Autowired 
    private MobileRepository mobileRepository; 
    Sms sms = new Sms(); 
    Date date = new Date(); 
    Timestamp timestamp1 = new Timestamp(date.getTime()); 
    Calendar cal = Calendar.getInstance(); 
    SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 


    @PostMapping(value = "/mobile", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) 
    public ResponseEntity<Mobile> createMobile(@RequestBody Mobile mobile) { 
     int hashcode = otp.RandomOtp(); 
     this.To = mobile.getMob(); 
     String Message = hashcode + " is your Pharmerz verification code "; 

     if (mobileRepository.findByUserid(mobile.getUserid()) != null) { 
      Mobile mobileprevious = mobileRepository.findByUserid(mobile.getUserid()); 
      mobileprevious.setMob(mobile.getMob()); 
      mobileprevious.setHASHCODE("" + hashcode); 
      mobileprevious.setUpdated(mobile.getUpdated()); 
      mobileprevious.setVERIFIED(0); 
      mobileRepository.save(mobileprevious); 
      sms.sms_generation(To, Message); 
      return new ResponseEntity<Mobile>(mobileprevious, HttpStatus.OK); 
     } else { 
      mobile.setHASHCODE("" + hashcode); 
      mobile.setVERIFIED(0); 
      mobileRepository.save(mobile); 

      sms.sms_generation(To, Message); 
      return new ResponseEntity<Mobile>(mobile, HttpStatus.OK); 

     } 
    } 



    @PostMapping(value = "/verifymobile", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) 
    public ResponseEntity<Mobile> verifyMobile(@RequestBody Mobile mobile) { 

     String userid = mobile.getUserid(); 
     String userotp = mobile.getHASHCODE(); 
     Mobile mobileobject = mobileRepository.findByUserid(userid); 
     if (mobileobject.getHASHCODE().equals(userotp)) { 
      System.out.println("Matched"); 
      mobileobject.setHASHCODE(""); 
      mobileobject.setVERIFIED(1); 

      mobileRepository.save(mobileobject); 
      String Acknowledge = "Thank you for verifying on Pharmerz"; 
      sms.sms_generation(To, Acknowledge); 

      return new ResponseEntity<Mobile>(mobileobject, HttpStatus.OK); 

     } else { 
      System.out.println("Miss matched"); 
      return new ResponseEntity<Mobile>(HttpStatus.BAD_REQUEST); 
     } 
    } 

} 
+0

私の答えに関するフィードバックはありますか?私はあなたがおそらく私のために望んでいることを知っていますしかし、私はかなり確信しています:他に何もここに現れません... – GhostCat

+0

私はゾーン時間の違いをチェックすることでこの問題を解決しました。 –

+0

私はそれをとっています:私の答えは役に立ちましたが、あなたの問題を本当に解決しませんでしたか? – GhostCat

答えて

4

最初のAPI中にデータベースに保存されていることを第2のAPIを検証:役立つログメッセージを作成する方法を学び、 debuggersまたはprofilersなどのツールを使用する方法。

意味:誰もは、このような問題をリモートからデバッグできます。あなたにこのような振る舞いを与える根本的な原因があるかもしれません。

あなたはバックステップしなければならないと

  • はあなたのエラーログに文字列「エラーログ」を置くことを助けていないことを理解しています。
  • コンソールに印刷することも、コードの「ログ」を得るための信頼できる方法ではないことを理解してください。特に3つの異なる場所で同じメッセージ「間違った、古いOtp」を持っている場合。それはと呼ばれ、コードの複製となり、それ自体がの悪い習慣
  • 健康に関するについての情報を提供するツールの使用方法を学ぶ。言い換えれば

:アプリケーション内第一の目標のログ情報は、彼らが行われた後に問題をデバッグするにできますにあります。このような状況であなたをサポートすることは間違いありません。

関連する問題