Имя: Пароль:
1C
1С v8
Хранения токена доступа
,
0 Мисс
 
26.12.19
08:24
Здравствуйте!
Необходимо обращаться из 1С к некоторому API с периодичностью один раз в 30 сек(сделаю регламентным заданием).
При обращении к api в заголовках нужно указывать токен доступа. Токен доступа можно получить по запросу к тому же api. Время жизни токена составляет 10 часов, после чего его нужно обновлять повторным запросом.
Вопрос: где лучше хранить токен при такой схеме работы?
1 PaulBC
 
26.12.19
08:31
Я сделал в параметрах сеанса, там же храню срок годности токена
2 Мисс
 
26.12.19
08:53
Спасибо, сейчас попробую.
Мне думалось что работа с параметрами сеанса в фоновых заданиях недоступна
3 Сияющий в темноте
 
26.12.19
09:08
По хорошему,в регистре сведений
за 10 часов и сервер рестартануть могут успеть.
4 jsmith82
 
26.12.19
09:11
(3) да и в типовых вроде как конфиденциальные приблуды в РС хранят
5 Мисс
 
26.12.19
09:19
(3) регистр сведений думаю не нужен, если при запросе получили 403 ошибку, то нужно обновить токен.
(4) как раз таки токен конфиденциальная инфа и ее не стоит хранить в РС
6 Мисс
 
26.12.19
09:48
(2)что то не получается через параметры сеанса,
вот тестовый код:
        Попытка
        Токен = ПараметрыСеанса.ТокенLOGO;
        ЗаписьЖурналаРегистрации("Токен лого",,,,"токен получен");
    Исключение
        ЗаписьЖурналаРегистрации("Токен лого",,,,"ошибка - " + ОписаниеОшибки());
        ПараметрыСеанса.ТокенLOGO = "тест токен";
    КонецПопытки;      

при каждом запуске происходит исключение, что попытка получения не инициализированного параметра сеанса, получается между вызовами фонового задания параметры сеанса очищаются?
7 Мисс
 
26.12.19
12:04
(6) - (1)
8 PaulBC
 
27.12.19
05:52
(6) Вообще да. Просто у меня была несколько другая задача: срок действия токена небольшой, а задание запускается раз в сутки, плюс еще могут подключаться пользователи под своим логином паролем, на который выдается свой токен.
В твоем случае видимо да, РС больше подойдет.
9 Сияющий в темноте
 
27.12.19
09:09
инициплизация параметров сеанса,есть такая процндура в модуле сеанса.
туда нужно записать пустое значение,чтобы получив его гарантированно получать токен заново и писать его в параметры сеанса.

если пользователям запретить чтение из регистра сведений,то данные можно будет получить только в привилегированном режиме.
10 Smit1C
 
27.12.19
09:13
Я делал через регистр,в нём ещё храню время окончания действия. Если срок истёк или ошибка токена, то обновляю его.
11 Smit1C
 
27.12.19
09:14
(10) + но у меня по заданию учетка была одна на несколько пользователей.
12 palsergeich
 
27.12.19
09:40
(1) Каждое регламентное это отдельный сеанс.
А параметры сеанса потом так и называются, что инкапсулированиы в сеансе.
(0) бахай РС или константу (время жизни 10 часов, в принципе примлимо)
13 palsergeich
 
27.12.19
09:42
(12) Ну мнемонически - пишем значение во много раз реже чем читаем (читаем раз в 30 сек. меняем раз в 10 часов) - допустимо и в константу положить. Ибо вкорячивать РС ради одной записи выглядит тоже не очень
14 Мисс
 
27.12.19
11:26
(13) так и придется делать скорее всего(хотя мне этот вариант не очень нравится, костыль какой-то)
есть еще вариант писать токен в файл на сервере