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

2023-12-26

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

实现这一点的最佳方法是什么?


您可以添加一个监听器security.interactive_login event.

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

Note:SecurityContext 从 Symfony 2.6 开始已被弃用。请参阅http://symfony.com/blog/new-in-symfony-2-6-security-component-improvements 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);
   }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony2:成功登录事件后,执行一组操作 的相关文章

随机推荐

  • 使用expect脚本从远程机器执行ssh

    我是expect脚本的新手 并且有一个用例 在该用例中 我需要从已经使用expect脚本完成ssh的机器上执行ssh 这是我的代码片段 usr bin expect f set timeout 60 spawn ssh email prot
  • 向 Google 地图添加多个标记

    我希望为 Google 地图 v3 API 中列出的每个商家添加标记在本页 http www inside guides co uk brentwood shops and shopping clothes shops html在右上角 我
  • 按列值动态过滤 jTable

    我需要根据特定列中的值动态过滤 JTable 因此 如果我有 2 列 例如 国家 地区 和 首都 我只想按 国家 地区 列进行过滤 我通过实现以下代码找到了问题的部分解决方案 import java awt BorderLayout imp
  • 在 t.string 的预定义值中进行选择

    是否有可能创建一个 collection select or select tag for a t string 用户可以在哪里选择字符串的预定义值 并且只允许将那些值存储在字符串的数据库中 例如 t string relationship
  • 使“gradle javadoc”任务与 Java 9 一起工作

    我有一个使用 source target 1 9 1 9 的多模块 Gradle Java 项目 有两个模块 my base and my dependsOnBase The my base模块没有其他依赖项 module my base
  • Spring 中的 ElasticSearch 与 @Query

    我已经使用 ElasticSearch 的 plugin head 接口成功创建了一个查询 该查询旨在返回特定位置的特定设备的最新时间戳 该查询如下所示 query bool must term deviceevent location i
  • 如何在 Bash 中拆分带引号的字符串?

    很少有问题 https stackoverflow com questions 918886 how do i split a string on a delimiter in bash关于如何通过给定分隔符拆分 Bash 脚本中的字符串有
  • android android.provider.MediaStore.ACTION_VIDEO_CAPTURE 返回 null onActivityResult 与 Nexus 7

    我正在使用意图来录制视频 所以我在 recordVideo 按钮的单击上使用以下代码 Videofilepath Intent intent new Intent android provider MediaStore ACTION VID
  • 在公共存储库中隐藏密钥

    我正在开发一个开源 JavaScript 应用程序 我正在尝试与第三方 API 特别是 github 进行交互 我试图将整个应用程序保留在客户端 所以我真的没有服务器可以回退或存储隐藏文件 作为 OAuth 流程的一部分 我需要提供为我的
  • 时间选择器显示时间为 4:7 而不是 04:07

    我有一个时间选择器功能 可以在 EditText 中设置时间 但它显示的格式不合适 例如 04 07pm 显示为 4 7 当时间中的数字小于 10 时 它会自动删除 0 请帮帮我 我的代码是 if v btnTimePicker1 Proc
  • 选择使用 IIS 的 WCF 服务托管或使用 Windows 服务的自托管

    因为我们想要使用 Asp Net MVC 3 开发一个新产品 这里的关键点是我们通过 WCF Web 服务与数据库对话的所有内容 我们正处于需要决定是在 IIS 中托管 WCF Web 服务还是使用 Windows 服务自托管的阶段 我提出
  • 带有滚动条的文本区域的圆角

    在我的网站上我有一个 htmltextarea框中有大量文本 因此它有一个滚动条 好吧 我想在我的文本区域上有圆角 但是滚动条看起来很糟糕 这是我的 HTML 片段
  • 变量名长度对 C# 性能重要吗?

    我一直想知道在 WinForms C 中使用长描述性变量名称是否对性能有影响 我问这个问题是因为在 AutoIt v3 解释语言 中提出了具有短名称的变量 例如aa代替veryLongVariableName速度要快得多 当程序大于 5 行
  • 弹簧接线,单例与原型

    刚刚阅读了 spring 的内容 当在 spring 中使用 DI 时 如果将 bean 设置为单例 默认 则将 分配 该类的单个实例 而原型每次都会强制创建一个新实例 每次容器分配相同的实例会产生什么后果 这是否意味着会有共享状态 也就是
  • 无法使用 Excel Interop 安排程序

    我用 C NET 开发了一个控制台程序 它使用 Excel Interop 如果我从命令行运行该程序 则该程序在我的开发计算机和 Windows Server 2008 中运行得很好 当我尝试安排任务每天运行时 我收到了这个恼人的互操作错误
  • ARM/neon memcpy 针对*未缓存*内存进行了优化?

    我使用的是基于 Xilinx Zynq 7000 ARM 的 SoC 我正在努力处理 DMA 缓冲区 需要帮助映射 Xilinx ARM SoC Zynq 7000 上的预留 可缓存 DMA 缓冲区 https stackoverflow
  • 通过 using 块使用 Process [重复]

    这个问题在这里已经有答案了 可能的重复 如果我不关闭 C 控制台应用程序中的 System Diagnostics Process 会发生什么情况 https stackoverflow com questions 185314 what
  • 即使 contentSize 大于框架并且在设置内容大小之前添加子视图,scrollView 也不起作用

    void viewDidLoad super viewDidLoad self navigationController navigationBar translucent YES self navigationController nav
  • C++ 计算器跳过 Else 语句

    我正在用 C 制作一个简单的计算器 然而 该程序并没有完全按照应有的方式运行 运行时 trig if 语句执行良好 但是基本算术 else 语句不起作用 我确定代码没有执行 else 语句 并且想知道如何修复它 else 语句中的代码工作正
  • Symfony2:成功登录事件后,执行一组操作

    我需要在用户成功登录后执行一组操作 这包括从数据库加载数据并将其存储在会话中 实现这一点的最佳方法是什么 您可以添加一个监听器security interactive login event 像这样附加你的听众 在此示例中 我还将安全上下文