2017-02-17 3 views
0

"パスワードを忘れました"に取り組んでいます。私は電子メール+ current_timeでリセットトークンを作成しようとしています。電子メールはユーザーログインですが、コードが時間> = 5分かどうかをチェックすると、このリンクは機能しません。ここに私のコードは次のとおりです。解読後に2つの変数値を読み取る

// preparing token email + time 
Date now   = new Date(); 
String prepareToken = "?email="+email+"&tokenTime="+now.getTime(); 

// encrypt prepareToken value 
Encryptor enc = new Encryptor(); 
resetToken = enc.encrypt(resetToken); 

http://domainname.com/ForgotPassword?resetToken=adj23498ljj238809802340823

が問題としてトークンは例えばとして送信されます。ユーザーがそれをクリックすると
、私はリクエストパラメータとして持って、明らかにこのパラメータを復号化するが、どのようにすることができます私は別の文字列

として1つの文字列+時間内に電子メールを取得し、あなたの問題は、単に目を解析している場合

答えて

0

を教えてくださいあなたのパラメータのマップのいくつかの並べ替えを取得するためにデコードされた文字列、私はParse a URI String into Name-Value Collectionをお読みください。

希望します。

EDIT:

は、前のリンクからsplitQuery(URLのURL)メソッドを持っていて、成功したトークンをデコードすると仮定すると:

public String getEmailFromToken(String decodedToken) { 
     // if you decoded your token it will looks like the prepareToken String 
     String stubUrl = "http://localhost"+decodedToken; 
     Map<String,String> map = splitQuery(new URL(stubUrl)); 
     return map.get("timeToken"); 
    } 

私はURL構文を尊重するために、適切に形成されたURLを作成。 少し微調整すれば、StringのsplitQueryを実装できるはずです。あなたがそれを管理できることを願っています。

+0

このURLからメールを送信する場合、特定のパラメータ値を取得できますか?String prepareToken = "email =" + email + "&tokenTime =" + now.getTime(); ' – usr169

+0

はい、queryStringをMapに変換すると、その他の質問の応答に続いて、map.get( "tokenTime")を使用してtokenTimeを取得できます –

+0

トークンを受け取るControllerメソッドそれを解読する。そうじゃないの? –

関連する問題