質問は、モジュールにModule.phpを設定して、ユーザがセッション中であるかどうかを確認する方法です。 彼がいない場合、彼をログインページにリダイレクトしたいです。セッションにログインしていない場合、ユーザをリダイレクトするためにZend Framework 2でModule.phpを設定する方法は?
セッションに参加していない(ログインしていない)ユーザが他のアクション(コントローラ)にアクセスする権限を持たせたくありません。
質問は、モジュールにModule.phpを設定して、ユーザがセッション中であるかどうかを確認する方法です。 彼がいない場合、彼をログインページにリダイレクトしたいです。セッションにログインしていない場合、ユーザをリダイレクトするためにZend Framework 2でModule.phpを設定する方法は?
セッションに参加していない(ログインしていない)ユーザが他のアクション(コントローラ)にアクセスする権限を持たせたくありません。
詳細は、ZF2のイベントで行う必要があります。click hereこのコードも役に立ちます。 http://pastebin.com/FFGVCpki
public function init() {
// Attach Event to EventManager
$events = StaticEventManager::getInstance();
// Add event of authentication before dispatch
$events->attach ('Zend\Mvc\Controller\AbstractActionController', 'dispatch', array (
$this,
'authPreDispatch'
), 110);
}
public function authPreDispatch($event){
$target = $event->getTarget();
$serviceLocator = $target->getServiceLocator();
// Do what ever you want to check the user's identity
$url = $event->getRouter()->assemble (array (
"controller" => "<controller>"
), array (
'name' => '<route name>'
));
$response = $event->getResponse();
$response->setHeaders ($response->getHeaders()->addHeaderLine ('Location', $url)));
$response->setStatusCode (302);
$response->sendHeaders();
exit();
}
は、リダイレクトを使用していない、 'ルート' イベントを使用して行うのsetParam()メソッドは、いくつかのようなこのhttps://github.com/samsonasik/SanAuthWithDbSaveHandler/commit/e2ae4dfcebb7a952d7b1adaadcf6496c994423b9
を参照してください。
$e->getRouteMatch()
->setParam('controller', 'Application\Controller\Login')
->setParam('action', 'login');
がモジュールからリダイレクトするよりよい方法はあります。 PHP? ZFの内部リダイレクションメカニズムを使用せずに直接ヘッダーを送るのは本当に好きではありません。 –