2017-02-17 10 views
0

Я работаю над «Забыл пароль». Я пытаюсь создать токен сброса с электронной почтой + current_time. email - это логин пользователя, тогда как код проверяет, будет ли время> = 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

Если ваш вопрос просто разбор-е e decoded String, чтобы получить какую-то карту ваших параметров, я предлагаю вам прочитать 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 , С небольшой настройкой вы должны иметь возможность реализовать splitQuery для String. Надеюсь, вы справитесь.

+0

Могу ли я получить конкретное значение параметра, например, по электронной почте с этого URL-адреса? String prepareToken = "? Email =" + email + "& tokenTime =" + now.getTime(); 'then Могу ли я получить значение tokenTime отдельно, когда мне нужно? – usr169

+0

Да, если вы преобразуете queryString в Map, как следует ответ в этом другом вопросе, вы можете получить tokenTime с map.get ("tokenTime") –

+0

Я предположил, что у вас уже есть метод контроллера, который получит токен и расшифровать его. Разве это не так? –