首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >登录后重定向到内部URL - Drupal 8

登录后重定向到内部URL - Drupal 8
EN

Stack Overflow用户
提问于 2022-09-26 12:33:00
回答 2查看 129关注 0票数 0

在我的D8站点上,我希望在所有用户登录后将其重定向到一个内部URL。下面是我的片段:

代码语言:javascript
复制
function mymodule_user_login($account) {
    $url = Url::fromUri('internal:/dashboard-overview');
    $response = new RedirectResponse($url->toString());
    $response->send();
}

这个片段重定向到“拒绝访问”错误页面,即使对管理员也是如此。没有设置访问此URL的权限。尽管如此,即使对于管理员,页面也没有加载。有什么帮助吗?

EN

回答 2

Stack Overflow用户

发布于 2022-10-18 12:26:44

你试过这个模块了吗?https://www.drupal.org/project/redirect_after_login,我想它会完成你想要的任务。

票数 2
EN

Stack Overflow用户

发布于 2022-10-04 13:45:57

Drupal 8和9您需要修改登录表单并添加一个提交处理程序,它将负责重定向。不能直接在表单alter中使用$ form _state->setRedirectUrl(),因为它将被UserForm::submitForm()覆盖。

代码语言:javascript
复制
/**
 * Implements hook_form_FORM_ID_alter().
 */
function mymodule_form_user_login_form_alter(&$form, FormStateInterface $form_state) {
  $form['#submit'][] = 'mymodule_user_login_submit';
}

/**
 * Form submission handler for user_login_form().
 *
 * Redirects the user to the dashboard after logging in.
 */
function mymodule_user_login_submit(&$form, FormStateInterface $form_state) {
  $url = Url::fromRoute('mymodule.dashboard');

  // Check if a destination was set, probably on an exception controller.
  // @see \Drupal\user\Form\UserLoginForm::submitForm()
  $request = \Drupal::service('request_stack')->getCurrentRequest();
  if (!$request->request->has('destination')) {
    $form_state->setRedirectUrl($url);
  }
  else {
    $request->query->set('destination', $request->request->get('destination'));
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73854232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档