Как сделать временный доступ для пользователя?
Подскажите пожалуйста, какие есть варианты, ограничения доступа. На пример отправил пользователю ключ доступа, он добавил и активировал на какой то срок. Время истекло, доступ закрылся. И ключ надо одноразовый. Я это вижу как то так. Может есть варианты и проще. Хелп. Или как проконтролировать каждого, кто зарегился.
Ответы (1 шт):
Довольно сложно такую систему представить. Если речь идет о доступе к каким-то ресурсам, и под ключем подразумевается токен, то можно посмотреть в сторону access_token и refresh_token. Если у вас распространение ключей происходит по другому алгоритму, то например можно использовать SharedPreference. Суть будет такой - вы передаете пользователю ключ, и после того как он принимается программой, нужно записывать в память переменную которая будет отображать момент времени когда ключ протухнет:
final long millisToAdd = 7_200_000; //два часа
long endTime = System.currentTimeMillis()+millisToAdd;
SharedPreferences prefs = ...;
prefs.edit().putLong("endTime", endTime ).apply();
дальше получаем при запуске активности или где вам там нужно проверить протухлость ключа и сравниваем текущее utc время с тем что сохранено:
if(System.currentTimeMillis()>prefs.getLong("time", 0)){
// ключ устарел
}
вот статья про доступ к апи по ключам. Вам нужно будет сделать двойную проверку- у себя и у пользователя. Если пользователь каким-то образом смог повторно выслать вам ключ который должен был протухнуть то вы должны у себя так же проверять валидность ключа. А за использование на разных устройствах - да ключ можно использовать и на других устройствах если вы или пользователь его перебросит на другое устройство. Но он все равно его сможет использовать пока проверка на вашей стороне сообщает что ключ свежий. Если вы сможете сделать такую проверку то можно не использовать время протухания на стороне клиента а проверять у себя как это делается на серверах. Либо сделать две проверки что точно не навредит ;)