0
使用Symfony的2.8和2.0 FOSUSerBundle,我想:添加閃光消息,全成登錄後重定向和註銷使用FOSUserBundle
- 根據用戶角色登錄和註銷後重定向,
- 添加自定義 :每個操作
我加入我的security.yml目標和default_target_path參數,但它只是重定向到一個預定的路線提示信息
正如你所看到的,我已經創建了一個logout_success_handler服務:
class LogoutSuccessHandler implements LogoutSuccessHandlerInterface
{
protected $router;
public function __construct(Router $router)
{
$this->router = $router;
}
public function onLogoutSuccess(Request $request)
{
$route = $this->router->generate('my_route');
return new RedirectResponse($route);
}
}
但它是一個很好的方法嗎? 如何添加Flash個人資料?
這種服務在文件系統中的推薦位置是什麼?我已將LogoutSuccessHandler
放入~/EventListener
目錄內,但我認爲這不是正確的地方...您有什麼意見?
另外,我將在登錄後準備一個類似的服務(重定向和一個flash消息)。
下面的代碼是否正常?
use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface;
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\HttpFoundation\Session\Session;
class LoginSuccessHandler implements AuthenticationSuccessHandlerInterface
{
protected $router;
protected $session;
public function __construct(Router $router, Session $session)
{
$this->router = $router;
$this->session = $session;
}
public function onAuthenticationSuccess(Request $request, TokenInterface $token_name(token))
{
$this->session->getFlashBag()->add('success', 'user.welcome');
$default_route = $this->router->generate('fos_user_profile_show');
return new RedirectResponse($default_route);
}
}
恐怕: '$請求 - >的getSession() - > getFlashBag() - >添加( '型', '消息');' 重定向後不顯示任何信息。 對於控制器中的其他操作,我一直在使用: '$ this-> addFlash('success','user.logout');' 正確顯示一個很好的'彈出'消息。 – Torpedr
我想,也許會話在這個過程中被破壞,並添加到security.yml: 'invalidate_session:false' 但我也沒有幫助。 – Torpedr
我已經更新了我的答案。請嘗試將Session對象注入到logout_success_handler服務中。 –