我有一個正常工作的Symfony2應用程序,可正確記錄用戶進出,並且在正確註銷時可將用戶重定向到主頁。Symfony2動態註銷目標?
我想在註銷時將它們保留在當前頁面上,只有沒有它們的登錄權限。
我的問題是:
我可以動態設置的用戶被定向到當他們註銷頁面?
我有一個正常工作的Symfony2應用程序,可正確記錄用戶進出,並且在正確註銷時可將用戶重定向到主頁。Symfony2動態註銷目標?
我想在註銷時將它們保留在當前頁面上,只有沒有它們的登錄權限。
我的問題是:
我可以動態設置的用戶被定向到當他們註銷頁面?
我需要註銷成功處理程序,這是我是如何實現它:
security.yml:
logout:
success_handler: acme.security.logout_success_handler
config.yml:
services:
acme.security.logout_success_handler:
class: Acme\DefaultBundle\Handler\LogoutSuccessHandler
的Symfony/src目錄/阿克米/ DefaultBundle /處理器/ LogoutSuccessHandler.php:
<?php
namespace Acme\DefaultBundle\Handler;
use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\DependencyInjection\ContainerAware;
class LogoutSuccessHandler extends ContainerAware implements LogoutSuccessHandlerInterface
{
public function onLogoutSuccess(Request $request)
{
$target_url = $request->query->get('target_url')
? $request->query->get('target_url')
: "/";
return new RedirectResponse($target_url);
}
}
註銷其正確重定向到主頁,因爲在註銷動作將其設置在家中的行動來重定向時
你需要的是一個註銷成功處理程序。
定義註銷處理器在security.yml:
security:
firewalls:
admin_area:
logout:
success_handler: acme.security.logout_success_handler
而且處理程序是這樣的:
namespace Acme\Bundle\SecurityBundle\Handler;
use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Bundle\FrameworkBundle\Routing\Router;
use Symfony\Component\DependencyInjection\ContainerAware;
class LogoutSuccessHandler extends ContainerAware implements LogoutSuccessHandlerInterface
{
public function onLogoutSuccess(Request $request)
{
// dynamic route logic
return new RedirectResponse($this->container->get('router')->generate('dynamic_route_name'));
}
}
順便說一句...請刪除不必要的進口,希望這有助於! :d
這裏是services.yml
services:
acme.security.logout_success_handler:
class: Acme\Bundle\SecurityBundle\Handler\LogoutSuccessHandler
calls:
- [ setContainer, [ @service_container ] ]
。所以註銷操作將用戶重定向到當前操作。 – sas