私は1つのサービスを行うためにsymfonyで、私は、システム内の任意のユーザーのログイン後にいくつかのプロセスを行い、以下のコードは、新しい午前のsymfonyでコントローラを受け入れる方法:redirectToRouteメソッド呼び出し
security.authentication.success_handler:
class: AppBundle\Handler\AuthenticationSuccessHandler
arguments: ["@security.http_utils", {}]
tags:
- { name: 'monolog.logger', channel: 'security' }
セキュリティファイルで追加1行、以下のコードは:
success_handler: security.authentication.success_handler
は、フォルダハンドラで新しいAuthenticationSuccessHandler
ファイルを作成し、コードの下:
<?php
namespace AppBundle\Handler;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Http\Authentication\DefaultAuthenticationSuccessHandler;
use Symfony\Component\Security\Http\HttpUtils;
use Symfony\Component\HttpFoundation\Response;
class AuthenticationSuccessHandler extends DefaultAuthenticationSuccessHandler {
public function __construct(HttpUtils $httpUtils, array $options) {
parent::__construct($httpUtils,$options);
}
public function onAuthenticationSuccess(Request $request, TokenInterface $token) {
$user=$token->getUser();
if (!empty($user) && $user->hasRole('ROLE_MEDICAL_PROVIDER')) {
if($user->getMedicalProvider()->getIsRegistrationCompleted() != 1) {
if($user->getMedicalProvider()->getRequestAssistance() == 1) {
return $this->redirectToRoute('registration_medical_provider_step'.$user->getMedicalProvider()->getRequestAssistanceStep());
} else {
return $this->httpUtils->createRedirectResponse($request, $this->determineTargetUrl($request));
}
} else {
return $this->httpUtils->createRedirectResponse($request, $this->determineTargetUrl($request));
}
}
else {
return $this->httpUtils->createRedirectResponse($request, $this->determineTargetUrl($request));
}
}
}
は、私は、コードのiユーザー上記の条件でのログインベースの後に別のルートにリダイレクトしたい、それが下の私にエラーを与える:
私はsymfonyの中に、ログイン認証成功ハンドラファイルからメソッドを呼び出す方法Error: Call to undefined method redirectToRoute() In AuthenticationSuccessHandler.php file
?あなたはDefaultAuthenticationSuccessHandlerを拡張する
return $this->httpUtils->createRedirectResponse($request, 'registration_medical_provider_step'.$user->getMedicalProvider()->getRequestAssistanceStep());
を参照してください。この
$this->httpUtils->generateUri($request, 'your_target_path');
を試すことができますクラス "AppBundle \ Handler \ AuthenticationSuccessHandler"の "generateUrl"。 –
が更新されました。すでに持っているhttpUtilsを直接使うことができます。 '$ request'と' path'または 'ルート名'を2番目の引数として渡したいものを返す 'HttpUtils :: createRedirectResponse()'をチェックしてください。 – dlondero