나는 그는 하나 개의 서비스를 만들기위한 심포니에서, 나는, 시스템의 모든 사용자 로그인 후 어떤 과정을, 다음 코드는 새로운 오전 심포니에서 컨트롤러를 수용하는 방법 :redirectToRoute 메소드를 호출
security.authentication.success_handler:
class: AppBundle\Handler\AuthenticationSuccessHandler
arguments: ["@security.http_utils", {}]
tags:
- { name: 'monolog.logger', channel: 'security' }
보안 파일에서 추가 한 줄, 아래 코드는 :
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));
}
}
}
내가 코드를 내가 사용자가 위의 조건에 로그인베이스 후 다른 경로로 리디렉션 할 그것은 나를 아래 오류 제공
:
Error: Call to undefined method redirectToRoute() In AuthenticationSuccessHandler.php file
가 어떻게 심포니에서 로그인 인증 성공 핸들러 파일에서 메소드를 호출? 당신은 DefaultAuthenticationSuccessHandler을 확장하고
return $this->httpUtils->createRedirectResponse($request, 'registration_medical_provider_step'.$user->getMedicalProvider()->getRequestAssistanceStep());
를 볼 수 있습니다 "AppBundle \ Handler \ AuthenticationSuccessHandler"클래스의 "generateUrl". –
업데이트 됨. 이미 가지고있는 httpUtils를 직접 사용할 수 있습니다. '$ request'와'경로'또는'경로 이름'을 두 번째 매개 변수로 전달하고자하는 것을 정확하게 반환하는'HttpUtils :: createRedirectResponse()'를 확인하십시오. – dlondero