Как использовать ajax интерфейс модуля, для не авторизованного пользователя?

Это вообще возможно?

Постоянно получаю:
errors: [{message: "Необходимо авторизоваться на сайте", code: "invalid_authentication", customData: null}]
0: {message: "Необходимо авторизоваться на сайте", code: "invalid_authentication", customData: null}
code: "invalid_authentication"
customData: null
message: "Необходимо авторизоваться на сайте"


В том числе даже на штатные:
BX.ajax.runAction("currency.format.get", {data: {currencyId: currency}})


Как-то можно использовать ajax для неавторизованного пользователя?
  • Вопрос задан
  • 1068 просмотров
Решения вопроса 2
Suntechnic
@Suntechnic Автор вопроса
Сам спросил - сам отвечаю:

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

На практике достаточно удалить дефолтный фильтра авторизации из для экшена который должен работать для неавторизованных пользователей. Сделать это можно в например в методе init вашего контроллера:

protected function init()
	{
        parent::init();
        
        $this->setActionConfig('apply',[
            '-prefilters' => [
                    '\Bitrix\Main\Engine\ActionFilter\Authentication'
                ]
            ]);
		
	}

    
    public function applyAction()
    {

Здесь мы говорим что из префильтров контроллера apply нужно удалить \Bitrix\Main\Engine\ActionFilter\Authentication
Ответ написан
@GiGaHerz
может кому пригодиться в контроллере
use Bitrix\Main\Engine\ActionFilter;
    public function configureActions()
    {
        return [
            'publicMethod' => [
                'prefilters' => [
                    // Убираем фильтр авторизации для этого метода
                    new ActionFilter\HttpMethod([ActionFilter\HttpMethod::METHOD_POST]), // Ограничиваем только POST запросы
                ],
            ],
        ];
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы