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