...
Оглавление |
---|
minLevel | 2 |
---|
maxLevel | 2 |
---|
type | flat |
---|
separator | pipe |
---|
|
Здесь ты найдешь описание механизма упрощенной авторизации по СМС .
...
и весь необходимый исходный код
Настройка web-сервера
Обрати внимание, в тот момент, когда мобильное устройство делает первый запрос на сервер, пользователь еще не авторизовался в базе данных. Чтобы все-таки как-то получить ответ от сервера 1С, я создаю специальный веб-сервер для авторизации. Здесь я описала, как его правильно настроить: Настройка веб-сервера для авторизации
Алгоритм
Администратор регистрирует пользователя в информационной базе, указывая его мобильный номер
...
Пользователь при запуске приложения вводит номер своего телефона и нажимает Получить СМС
Мобильное приложение отправляет http-запрос на сервер с уведомлением, что пользователь хочет авторизоваться
Сервер проверяет:
Сервер, если условия выполняются, отправляет одноразовый код пользователю через оператора отправки СМС
Сервер, если условия не выполняются, отправляет ошибку Пользователю
Пользователь вводит одноразовый код из СМС
Мобильное приложение отправляет http-запрос на сервер с уведомлением, что пользователь авторизовался
Сервер формирует начальные данные и регистрирует их на узле пользователя
Информация |
---|
Данный метод не является безопасным и должен применяться только там, где действительно необходимо. Всегда используй https-соединение с web-сервером! SSL-сертификат стоит не так дорого, чтобы потом не кусать локти |
Код
Получение кода Пользователь нажал получить код авторизации в мобильном устройстве
Раскрыть |
---|
title | Мобильное приложение. Получить код авторизации |
---|
|
Блок кода |
---|
| &НаКлиенте
Процедура ПолучитьКодАвторизации(Команда)
Если Не ЗначениеЗаполнено(КодСтраны) Тогда
Сообщить("Не выбран код страны");
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(НомерТелефона) Тогда
Сообщить("Не заполнен номер телефона");
Возврат;
КонецЕсли;
Если СтрДлина(Формат(НомерТелефона, "ЧГ=")) <> 10 Тогда
Сообщить("Номер телефона указан неверно. Необходимо ввести 10 цифр");
Возврат;
КонецЕсли;
ОдноразовыйКод = 0;
ОдноразовыйКодИзСообщения = 0;
ЛогинИзСообщения = "";
ПарольИзСообщения = "";
СтруктураВозврата = ОтправитьСМСНаАвторизацию();
Если СтруктураВозврата.КодСостояния = 200 Тогда
тЧтение = Новый ЧтениеJSON;
тЧтение.УстановитьСтроку(СтруктураВозврата.ОтветСтрока);
ДанныеОтвета = ПрочитатьJSON(тЧтение);
тЧтение.Закрыть();
ОдноразовыйКодИзСообщения = ДанныеОтвета.Code;
ЛогинИзСообщения = ДанныеОтвета.Login;
ПарольИзСообщения = ДанныеОтвета.Pass;
Элементы.ОдноразовыйКод.Видимость = Истина;
Элементы.ПолучитьКодАвторизации.Доступность = Ложь;
ОсталосьДоПовторнойОтправки = 60;
Элементы.ПолучитьКодАвторизации.Заголовок = "Получить повторный код можно через";
Элементы.ОсталосьДоПовторнойОтправки.Видимость = Истина;
ПодключитьОбработчикОжидания("ОтсчетВремени", 1, Ложь);
Сообщить("Код авторизации отправлен на указанный номер");
Иначе
Сообщить(СтруктураВозврата.ОтветСтрока);
Элементы.ОдноразовыйКод.Видимость = Ложь;
Элементы.ПолучитьКодАвторизации.Доступность = Истина;
Элементы.ПолучитьКодАвторизации.Заголовок = "Отправить SMS с кодом";
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОтправитьСМСНаАвторизацию()
Запрос = Новый HTTPЗапрос;
Запрос.АдресРесурса = СокрЛП(Константы.ИмяБазы.Получить()) + "/hs/RassvetAuthorizationSMS/"
+ Формат(НомерТелефона, "ЧГ=") + "?CountryCode=" + СтрЗаменить(КодСтраны, "+", "");
Соединение = Новый HTTPСоединение(Константы.IPСервера.Получить(),,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Ответ = Соединение.Получить(Запрос);
Возврат Новый Структура("КодСостояния, ОтветСтрока", Ответ.КодСостояния, Ответ.ПолучитьТелоКакСтроку());
КонецФункции |
|
...