0

通过这个问题,已经阐明了在 Symfony2 应用程序中登录后如何执行代码。特别是,解决方案是编写一个AuthenticationHandler实现接口AuthenticationSuccessHandlerInterface

表示,在onAuthenticationSuccess()interface 的函数中AuthenticationSuccessHandlerInterface,必须指定用户在登录后将被重定向到的 uri。

默认情况下,当用户尝试访问安全区域(即页面 ​​X)时,Symfony2 会将用户重定向到登录页面。当登录成功时,用户被重定向到安全页面 X。因此,登录后没有唯一的页面(例如主页)。

如何处理onAuthenticationSuccess()将用户重定向到页面 X的功能?

4

1 回答 1

1

我实施了这个解决方案。1)将会话中的URI保存在每个访问页面(登录页面除外)中。onAuthenticationSuccess()2) 在函数中加载 URI 以在RedirectResponse().

要完成第 1 点),需要两个步骤: 首先)假设已定义基本模板,请将以下代码放在您想要的位置(例如,也在<html>标记之前:

{% block setcurrenturi %}
    {{ setCurrentURI(app.session, app.request.uri) }}
{% endblock %}

此代码需要在您的 Twig Extension 中定义一个函数(假设您已经实现了Twig Extension)。功能非常简单:

public static function setCurrentURI($session, $URI) {
    $session->set('LAST_URI', $URI);
}    

然后,转到登录表单页面的 Twig 模板并将块重新定义为:

{% block setcurrenturi %}
{% endblock %}

这样登录页面的URI就不会保存在session中了。

现在,在onAuthenticationSuccess()函数中放入以下行:

  return new RedirectResponse($request->getSession()->get('LAST_URI'));
于 2012-08-10T16:22:54.100 回答