2017-02-17 8 views
0

"비밀번호 찾기"작업 중. 이메일 + 현재 시간으로 재설정 토큰을 만들려고합니다. 이메일은 사용자 로그인이지만 코드가 시간이 5 분 이상인지 확인하면이 링크가 작동하지 않습니다. 여기에 내 코드 :해독 후 두 개의 변수 값을 읽음.

토큰은 예를 들어로 전송됩니다
// 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

문제 : 사용자가 다음을 클릭 내가 요청 매개 변수로 가지고 분명히이 매개 변수를 해독 만하면
어떻게 문제는 단순히 일을 구문 분석하는 경우 나는

답변

0

을 알려 주시기 바랍니다 다른 문자열로 한 문자열 + 시간에 이메일을 전자 디코딩 된 문자열 귀하의 매개 변수의지도 일종의 얻을, 나는 당신이 Parse a URI String into Name-Value Collection 읽을 것을 권 해드립니다.

희망이 있습니다.

편집 :

이전 링크에서 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을 생성을 . 약간의 조정으로 문자열에 대해 splitQuery를 구현할 수 있어야합니다. 당신이 그걸 관리 할 수 ​​있기를 바랍니다.

+0

'String prepareToken = "? email ="+ email + "& tokenTime ="+ now.getTime();'그렇다면 내가 필요할 때 tokenTime 값을 별도로 얻을 수 있습니까? – usr169

+0

예, queryString을 Map으로 변환하면 다른 질문에서 응답을 따라 map.get ("tokenTime")을 사용하여 tokenTime을 얻을 수 있습니다 –

+0

나는 이미 토큰을받을 Controller 메서드가 있다고 가정했습니다 그것을 해독하십시오. 그게 아닌가? –