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服务中。 –