#flutter #authentication #dart #odoo
#флаттер #аутентификация #dart #odoo
Вопрос:
В моем приложении я использую библиотеку DIO flutter для входа в систему и для создания вопроса в моей базе данных. Это моя конфигурация
static String BASE_URL = "http://localhost:8069/";
static Dio dio = Dio()
..options.baseUrl = BASE_URL
..options.connectTimeout = 5000
..options.receiveTimeout = 100000;
Для входа в систему у меня есть:
Map<String, dynamic> data = {
"params": {
'db': "name_db",
'login': 'name_xxxxx',
'password': 'password_xxxx'
}
};
dio.interceptors.add(CookieManager(cookieJar));
globals.dio = dio;
Response response = await dio.post("/web/session/authenticate",
data: json.encode(data),
options:
Options(headers: {"Content-Type": "application/json"}));
Есть ли способ передать зашифрованные логин и пароль, чтобы не вводить имя пользователя и пароль открытым текстом в коде моего приложения?
Комментарии:
1. Я бы сделал это другим способом, написав открытым текстом зашифрованную версию вашего логина и пароля, которые вы бы расшифровали, чтобы они были в ваших данных.
Ответ №1:
Вы должны получить пароль в виде обычного текста и создать хэш пароля в бэкэнде и сохранить хэш в БД. и во время входа в систему возьмите обычный текст в качестве пароля, а затем создайте его хэш, а затем сравните его с хэшем пароля DB. для создания хэша вы должны использовать секретный ключ. найдите в Google, какой язык вы когда-либо использовали в бэкэнде.
в качестве альтернативы вы можете попробовать RSA. Это криптосистема с открытым ключом, которая широко используется для безопасной передачи данных. используется открытый ключ для кодирования и используется закрытый ключ для декодирования.
ПРИМЕЧАНИЕ: Это полностью связано с архитектурой, Dio не имеет к этому никакого отношения.
Комментарии:
1. Я понимаю. Проблема в том, что логин, который вы видите в коде, является общим для всех пользователей. Я вхожу в систему, чтобы затем иметь возможность запрашивать базу данных, фактически у разных пользователей, которые будут использовать приложение, не будет персонального входа. Я хотел, чтобы в моем коде не было четкого имени пользователя и пароля
2. Вы говорите о статическом имени пользователя и пароле, верно? Это небезопасно! но вы можете создать строку base64 и сохранить их в коде. перед отправкой запроса расшифруйте его.