Есть ли какая-либо функция для входа в систему в CKAN без вызова API?

В идеале, как логин работает в CKAN согласно who.ini конфигурация и код это:

[plugin:friendlyform]
use = ckan.lib.repoze_plugins.friendly_form:FriendlyFormPlugin
login_form_url= /user/login
login_handler_path = /login_generic

Здесь login_handler_path отвечает за вход в систему, а на стороне интерфейса CKAN он отправляет POST-запрос к конечной точке /login_generic с name в качестве имени пользователя и password.

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

Итак, есть ли какая-либо вспомогательная функция/функция действия, которую я могу использовать, чтобы я мог войти в систему за кулисами в самом плагине CKAN.

Насколько я понимаю, CKAN использует некоторые repoze cookie / API Headers, чтобы определить, вошел ли пользователь в систему или нет. Если я использую обычные POST-запросы в коде Python, я не смогу установить эти файлы cookie или переменные среды, и если я попытаюсь сделать это вручную, я боюсь, что это что-то сломает.

Любая помощь высоко ценится


person Shashank    schedule 18.11.2020    source источник


Ответы (1)


Если я правильно понял ваш вопрос, я думаю, вам следует попробовать использовать IAuthFunctions для переопределения встроенной аутентификации CKAN. Этот интерфейс позволяет интегрировать пользовательские методы аутентификации в CKAN.

person Zoran Pandovski    schedule 13.12.2020
comment
Привет @Zoran Pandovski, допустим, я хочу добавить reCAPTCHA на страницу входа, могу ли я реализовать это с помощью identify() в IAuthFunctions? Спасибо! - person Feng. Ma; 10.05.2021