Перенаправление после входа в drupal 8

#redirect #drupal #drupal-8 #drupal-modules

Вопрос:

Я пытаюсь перенаправить пользователей после входа в систему на адрес назначения, указанный в URL-адресе, например : /пользователь/логин?назначение=мои модули

Я использую этот модуль для перенаправления на страницу входа в систему вместо отображения страницы 403 : https://www.drupal.org/project/r4032login

Он хорошо работает и генерирует URL-адрес с параметром ‘?destination=’, но после входа в систему я каждый раз перенаправляюсь на домашнюю страницу.

Модуль должен управлять этим сам по себе, но я все равно попытался создать пользовательский модуль для перенаправления, я создал пользовательский модуль и установил его, но по-прежнему ничего не происходит.

Вот мой код :

 use DrupalCoreFormFormStateInterface;
use DrupalCoreUrl;

/**
* Implements hook_form_FORM_ID_alter().
*/
function test_redirect_form_user_login_form_alter(amp;$form, FormStateInterface $form_state, $form_id) {
$form['#submit'][] = 'test_redirect_user_login_form_submit';
}

/**
* Custom submit handler for the login form.
*/
function test_redirect_user_login_form_submit($form, FormStateInterface $form_state) {
$url = Url::fromRoute('a route');
$form_state->setRedirectUrl($url);
}
 

Как я правильно это делаю ? Спасибо

Комментарии:

1. Убедитесь, что вы включили свой модуль и его имя машины test_redirect . Я попробовал ваш приведенный выше код, и он отлично работает

2. Мне пришлось изменить его на $form[‘действия’][‘отправить’][‘#отправить’] [], чтобы заставить его вызвать обработчик, но теперь я не могу получить параметр «назначение» в этом коде.

3. Попробуй это: $request = Drupal::service('request_stack')->getCurrentRequest(); $destination = $request->request->get('destination');

Ответ №1:

Я знаю, что вы просили помочь с вашим кодом. Я не очень хорошо разбираюсь в пользовательских модулях. Может быть, этот модуль поможет вам:

https://www.drupal.org/project/login_destination

Я использовал его, и он довольно хорош, но может не соответствовать вашим потребностям.

Как только вы установите его, у вас будет возможность установить разные места входа для разных пользователей, найденных по адресу [mysite.com]/администратор/конфигурация/люди/вход-назначение

Ответ №2:

Перенаправление пользователя (Перенаправление пользователя после входа в систему или выхода из системы) помогает перенаправить пользователя после входа в систему или выхода из системы. Этот модуль совместим с последними версиями Drupal и имеет полный охват безопасности.