2016-09-08 2 views
0

Я общаюсь с API с помощью модификации. Когда пользователь входит в систему, я сохраняю учетную запись в базе данных и когда пользователь переходит к приложению в следующий раз, я получаю данные из базы данных (поэтому я пропустил экран входа в систему). Проблема в том, когда пользовательский токен истекает. Как справиться с ситуацией?Что делать, если токен истек

в фрагменте входа ПСЕВДОКОД

user = ... //get user from database 
if(user != null) { 
    startActivityAccountActivity(); 
} 
//onButtonClick 
emailLogin(); 

ответ

0

Это зависит от вашего уровня задней конец безопасности. У вас есть две возможности справиться с этой ситуацией.

  1. Построить некоторый механизм на задней торцевой стороне, так что ваш сервер будет посылать некоторые refresh-token вместе с user's token в момент входа в Android устройства. Всякий раз, когда токен пользователя заканчивается, запрашивайте у устройства Android на свой сервер, чтобы получить new user's token, отправив old user's token вместе с refresh-token. И вы можете использовать это new user's token для будущего. Повторяйте это, когда user's token истекло.

    Примечание - refresh-token предназначено для подтверждения, если это действительный ресурс, который запрашивает user's token.

  2. Вы можете удалить учетную запись пользователя из базы данных и сообщить пользователю о повторном входе в систему.

+0

для меня 2) может быть, лучше. Так 'onFailure' проверить код ответа и перейти к loginFragment с тостами информации, что токены истек – Stepan

+0

@Stepan выглядит лучше :) – Nikhil

0

Не ходите в свою деятельность «вошел в систему» ​​только потому, что вы сохранили токен, потому что, как вы правильно заметили, это может быть недействительным. Попробуйте аутентифицироваться с помощью API, когда вы получаете токен, и только переходите к «зарегистрированной» активности, если она действительно работает. В противном случае продолжайте действовать так, как если бы не было сохранено токена (и удалить истекший из базы данных).

Вы также должны заметить, что токен может истекать, когда пользователь находится в действии «вошел в систему». Например, пользователь вошел в систему, использовал приложение, а затем перешел в другое приложение со своего экрана. Через неделю он/она возвращается в ваше приложение с открытой «активностью», но в то же время токен истек, и ничего не будет работать. Поэтому вы также должны проверить, работает ли токен там, возможно, в действии onStart().

Как сказал indramurari, вы также можете обрабатывать его на бэкэнд, если вы его контролируете. Но имейте в виду, что он не решает вашу неотъемлемую проблему обработки истекших токенов, токен обновления также может истечь, и вы вернетесь к квадрату. Если вы не обновляете токены обновления, вы можете просто не пропустить токены входа. (Этот параграф будет комментарий к его ответу, но у меня недостаточно репутации.)

Смежные вопросы