symfony @Security 和 redirect_url
symfony @Security and redirect_url
可以使用
/**
* @Security("has_role('ROLE_USER')")
*/
public function indexAction()
{
// ...
}
并为登录后重定向定义 redirect_url
这里是security.yml
firewalls:
main:
pattern: ^/
form_login:
target_path_parameter: redirect_url
我不能使用引荐来源网址,因为它的 ajax 请求。
所以现在我使用
if(!$user = $this->getUser()) {
return $this->redirect($this->generateUrl('fos_user_security_login', array(
'redirect_url' => $request->server->get('HTTP_REFERER')
)));
}
是否可以在安全注释中执行此操作?
您可以定义一个登录成功处理器:
form_login:
success_handler: some.service.id
创建一个实现 \Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface
的 class 并使 onAuthenticationSuccess()
方法 return 成为 \Symfony\Component\HttpFoundation\RedirectResponse
到您想要的任何 URL。
通过这种方式,您可以拥有确定目标的任何自定义逻辑 URL 您需要。
例如,您可以使用 \Symfony\Component\HttpFoundation\Request::isXmlHttpRequest()
方法来确定它是否是一个 Ajax 请求并采取相应的行动。
可以使用
/**
* @Security("has_role('ROLE_USER')")
*/
public function indexAction()
{
// ...
}
并为登录后重定向定义 redirect_url
这里是security.yml
firewalls:
main:
pattern: ^/
form_login:
target_path_parameter: redirect_url
我不能使用引荐来源网址,因为它的 ajax 请求。
所以现在我使用
if(!$user = $this->getUser()) {
return $this->redirect($this->generateUrl('fos_user_security_login', array(
'redirect_url' => $request->server->get('HTTP_REFERER')
)));
}
是否可以在安全注释中执行此操作?
您可以定义一个登录成功处理器:
form_login:
success_handler: some.service.id
创建一个实现 \Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface
的 class 并使 onAuthenticationSuccess()
方法 return 成为 \Symfony\Component\HttpFoundation\RedirectResponse
到您想要的任何 URL。
通过这种方式,您可以拥有确定目标的任何自定义逻辑 URL 您需要。
例如,您可以使用 \Symfony\Component\HttpFoundation\Request::isXmlHttpRequest()
方法来确定它是否是一个 Ajax 请求并采取相应的行动。