Как сделать базовую http авторизацию (Войти и Зарегистрироваться) и сохранить токен

Уже есть много ответов, которые расскажут вам, как сделать правильную копию, но никто из них не говорит, почему ваша оригинальная «копия» не удалась.

Python не сохраняет значения в переменных; он связывает имена с объектами. Ваше исходное назначение взяло объект, на который ссылается my_list, и связал его с new_list. Независимо от того, какое имя вы используете, остается только один список, поэтому изменения, сделанные при обращении к нему как my_list, будут сохраняться при обращении к нему как new_list. Каждый из других ответов на этот вопрос дает вам различные способы создания нового объекта для привязки к new_list.

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

new_list = list(my_list)  # or my_list[:], but I prefer this syntax
# is simply a shorter way of:
new_list = [element for element in my_list]

Чтобы сделать копию списка еще на один шаг, скопируйте каждый объект, на который ссылается ваш список, и привяжите эти копии элементов в новый список.

import copy  
# each element must have __copy__ defined for this...
new_list = [copy.copy(element) for element in my_list]

Это еще не глубокая копия, потому что каждый элемент списка может ссылаться на другие объекты, точно так же, как список привязан к его элементам. Чтобы рекурсивно скопировать каждый элемент в списке, а затем каждый другой объект, на который ссылаются каждый элемент, и т. Д .: выполните глубокую копию.

import copy
# each element must have __deepcopy__ defined for this...
new_list = copy.deepcopy(my_list)

Для получения дополнительной информации о копировании в окне [gg] см. документацию .

0
задан Abdullah 27 March 2019 в 19:11
поделиться

1 ответ

лучший способ сделать это, используя общие настройки

  • 1 - вам нужно установить зависимость (см. Ссылку)
  • 2 - сделать ваш запрос http на ваш сервер, чтобы получить «ключ авторизации»
  • 3 - создать два ключа «общих настроек»:

и дать первому имя «auth_key» чтобы сохранить ключ аутентификации и сохранить другой как тип данных «bool», присвойте ему имя «is_login» теперь в основной функции дротика, проверьте параметр «is_login», если он истинный, счетчик (домашняя страница, учетная запись ... и т. д.), в противном случае возьмите его в виджет входа

код дротика, чтобы установить ключи буксировки

Future<void> setUserLogin(String auth_token) async{
    SharedPreferences pref = await SharedPreferences.getInstance();
    pref.setString("auth_token", auth_token);
    pref.setBool("is_login", true);
 }

проверить, если вход:

  Future<bool> isUserLogin() async{
    SharedPreferences pref = await SharedPreferences.getInstance();
    return pref.getBool("is_login");
 }

получить ключ авторизации:

  Future<bool> isUserLogin() async{
    SharedPreferences pref = await SharedPreferences.getInstance();
    return pref.getString("auth_token");
 }

метод выхода из системы

  Future<void> logout() async{
    SharedPreferences pref = await SharedPreferences.getInstance();
    pref.remove("auth_key");
   pref.remove("is_login");
 }

Я просто приведу пример того, как это сделать, вам нужно больше узнать о «SharedPreferences» по ссылке ниже, чтобы узнать больше о есть другие методы, такие как сохранение данных в SQL, но это более сложный, и я думаю, что это менее безопасно (потому что есть много корневых приложений, работающих как sqllite браузеры)

0
ответ дан abdalmonem 27 March 2019 в 19:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: