【发布时间】:2017-12-14 06:49:20
【问题描述】:
我是 symfony 的新手,在任何用户登录系统后我都会做一些处理,为此做一个服务,代码如下:
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));
}
}
}
我想在登录后根据我用户上面的代码条件重定向到另一条路线,它给了我以下错误:
错误:调用未定义的方法 redirectToRoute() In AuthenticationSuccessHandler.php 文件
如何从 symfony 中的登录验证成功处理程序文件中调用方法?
【问题讨论】:
标签: php symfony symfony-forms