当前位置: 首页 > 面试题库 >

Symfony2:成功登录事件后,执行一组操作

杜俊逸
2023-03-14
问题内容

用户成功登录后,我需要执行一组操作。这包括从数据库加载数据并将其存储在会话中。

实现此目的的最佳方法是什么?


问题答案:

您可以向security.interactive_login事件添加侦听器。

像这样附加您的听众。在此示例中,我还将安全性上下文和会话作为依赖项传递。

注意: 从Symfony 2.6开始不推荐使用SecurityContext。请参考
http://symfony.com/blog/new-in-symfony-2-6-security-component-
improvements

parameters:
   # ...

   account.security_listener.class: Company\AccountBundle\Listener\SecurityListener

services:
   # ...

   account.security_listener:
        class: %account.security_listener.class%
        arguments: ['@security.context', '@session']
        tags:
            - { name: kernel.event_listener, event: security.interactive_login, method: onSecurityInteractiveLogin }

在您的听众中,您可以存储会话中想要的任何内容。在这种情况下,我设置了用户时区。

<?php

namespace Company\AccountBundle\Listener;

use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;

class SecurityListener
{

   public function __construct(SecurityContextInterface $security, Session $session)
   {
      $this->security = $security;
      $this->session = $session;
   }

   public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
   {
        $timezone = $this->security->getToken()->getUser()->getTimezone();
        if (empty($timezone)) {
            $timezone = 'UTC';
        }
        $this->session->set('timezone', $timezone);
   }

}


 类似资料:
  • 问题内容: 我有一个示例,尝试使用Symfony2和FOSUserBundle创建AJAX登录。我设置我自己和在我的文件。 这是课程: 这对于处理成功和失败的AJAX登录尝试都非常有用。但是,启用后-我无法通过标准表单POST方法(非AJAX)登录。我收到以下错误: 我希望自己的重写和重写仅对XmlHttpRequests(AJAX请求)执行,如果没有,则将执行交还给原始处理程序。 有没有办法做到

  • 问题内容: 我想要在spring成功注册后自动登录:我有一个受保护的页面,需要登录才能访问它们,我要在注册后跳过登录页面并进行自动登录,以便用户可以看到受保护的页面有我吗?我正在使用spring 3.0,spring security 3.0.2,该怎么做? 问题答案: 可以通过以下方式(半伪代码)通过spring安全性完成此操作: 更新:仅包含注册后如何创建会话

  • 我有一个名为“客户列表”的组件,其中显示了API中的所有客户: 客户列表。html customers-list.ts 我有另一个名为“添加客户”的组件,我将在其中添加新客户,如下所示: 现在,POST操作正常,但如果不刷新页面,则不会更新客户列表。 如何在成功执行操作后更新组件,而无需刷新整个页面? 服务文件:

  • 我正在用android编程。当我使用(LoginActivity)成功登录时,下一步是加载MainActivity,这个MainActivity是一个导航抽屉活动,但我遇到了这个错误: 致命异常:主进程:com.example.administrador.vicon,PID:32149java.lang.运行时异常:无法启动活动ComponentInfo{com.example.administr

  • 我在symfony网站上制作了登录操作教程:http://symfony.com/doc/current/cookbook/security/form_login_setup.html 当我在表单中登录时,会出现以下错误: 这是我的保安 我的安全控制器: 单击提交按钮后的重定向是登录检查,但其中没有代码,因为symfony说:

  • 我想限制登录用户的登录路径, security.yml 我的登录功能: 问题是它可以工作,例如,对于/admin,只有ROLE\u admin有访问权限,ROLE\u用户号。但是/login,如果我登录或不登录,我可以访问它,在symfony2开发工具中,我看到我是匿名的,我登录了stel。。。我没有主意