modules/custom/your_module/your_module.services.yml
services:
your_module.event_subscriber:
class: Drupal\your_module\EventSubscriber\YourModuleSubscriber
tags:
- {name: event_subscriber}
modules/custom/your_module/src/EventSubscriber/Your_moduleSubscriber.php
<?php
namespace Drupal\your_module\EventSubscriber;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class YourModuleSubscriber implements EventSubscriberInterface {
public function checkForRedirection(GetResponseEvent $event) {
// 参考)一部の例外を除いて匿名ユーザーはloginページに飛ばす
if (\Drupal::currentUser()->isAnonymous()) {
if (!preg_match('!^(/user/|/sended-onetime-link-mail)!', $_SERVER['REQUEST_URI'])) {
$path = \Drupal\Core\Url::fromUserInput('/user/login');
$response = new RedirectResponse($path->toString());
$response->send();
}
}
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
$events[KernelEvents::REQUEST][] = array('checkForRedirection');
return $events;
}
}
コメント
動的キャッシュ再生成時に越させたい場合は 優先度 > 27
パーマリンク Submitted by actbrain on 2018/04/02 11:05.
動的キャッシュ再生成時に来させたい場合は 優先度 > 27 にする。
$events[KernelEvents::REQUEST][] = ['checkForRedirection', 30];何が何でも毎回来させたい場合は 優先度 > 200 にする。
$events[KernelEvents::REQUEST][] = ['checkForRedirection', 280];ページ