Symfony2 登录和安全

2023-12-11

有没有办法可以存储用户上次登录的时间?

我正在使用 symfony2,安全配置一切正常。

我见过这个基于 Symfony 2 的项目的安全性和登录,这是一个类似的问题,但它不符合我的需要。

还有其他解决办法吗?


您可以创建一个AuthenticationHandlerSymfony 将在用户登录成功时调用,您可以将登录时间保存到User实体属性(假设您有这种情况)。

首先,创建成功身份验证处理程序:

namespace Acme\TestBundle\Handler;

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\Component\DependencyInjection\ContainerAware;

class AuthenticationHandler extends ContainerAware implements AuthenticationSuccessHandlerInterface
{
    function onAuthenticationSuccess(Request $request, TokenInterface $token)
    {
        $token->getUser()->setLoginTime(new \DateTime());
        $this->container->get('doctrine')->getEntityManager()->flush();

        return new RedirectResponse($this->container->get('router')->generate('login_success'));
    }
}

然后您需要将身份验证处理程序注册为配置文件中的服务,例如,src/Acme/TestBundle/resources/Config/services.yml

services:
    authentication_handler:
        class: Acme\TestBundle\Handler\AuthenticationHandler
        calls:
            - [ setContainer, [ @service_container ] ] 

并配置登录表单以使用创建的处理程序,查看您的security.yml

form_login:
    success_handler: authentication_handler

显然,要使其发挥作用,您需要有一个User实体具有loginTime属性和相应的设置器。并且您需要配置登录才能使用User实体存储库作为用户提供者和DaoAuthenticationProvider,如下所述:http://symfony.com/doc/current/book/security.html#loading-users-from-the-database.

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

Symfony2 登录和安全 的相关文章

随机推荐

  • Spring JPA 存储库仅在结果已存在时获取 id 而不是完整对象

    在 Spring Boot 休息应用程序中 我有两个类 如下所示 用户 java 和消息 java 消息具有 from 字段 用户 并且 to 的类型为 用户 所以我做了这样的 在用户 java中 Entity JsonIdentityIn
  • 文件夹内的 Symfony2 项目仅使用 .htaccess 隐藏 web/app.php

    我有使用 Symfony2 制作的帮助台项目 我想将该项目托管在我网站的一个文件夹中 隐藏 URL 中的 web app php 我无法使用 apache 创建虚拟主机 因此我需要将 htaccess 与 RewriteRule 和 Rew
  • CSS:我无法将宽度设置为“自动”始终显示 100%

    因为某些原因 div 的宽度是 100 如果我将其设置为 auto 则不会发生任何变化 尝试过display block 但还是什么都没有 我有什么index html box border 1px solid 555 display bl
  • 自己的CollectionView用于分页、排序和过滤

    我已经实现了自己的 CollectionView 将数据集合绑定到 WPF 中的 DataGrid 主要目标是分页 效果很好 我编写了以下 C 代码 public class SchemesCollectionView Collection
  • java中的除法

    我用Java做了一个简单的划分 float f 19 7f 100 System out println f 0 19700001 double d 19 7 100 System out println d 0 1969999999999
  • 如何强制网站打印

    这听起来像是一个奇怪的请求 但是 我有一个 Web 应用程序 它设置为定期收集数据并将其存储到数据库中 该应用程序被设计为基本上始终保持打开状态 并且屏幕显示最近添加到数据库中的内容 通过使用ajax检查数据库并在有新内容时刷新页面 每当将
  • Nokogiri 以字符串形式返回值,而不是数组

    我正在使用 Nokogiri 运行一个返回多个值的脚本 我的印象是 并且通过多个来源向我保证 结果应该采用数组的形式 相反 我得到了一根看起来很难看的绳子 这是代码 require nokogiri require open uri req
  • MongoDB 将相关集合项计数与其他集合结果合并

    我是 mongodb 的新手 并试图弄清楚如何有效地查询集合中的每个项目 I have projects收藏 tasks收藏品 projects id ObjectId name String tasks id ObjectId proje
  • alignItems =“flex-end”不适用于 onContentSizeChange

    无论文本区域如何扩展 我都试图将角图标固定在屏幕底部 我尝试过position absolute and bottom 0但它隐藏在我的背后textArea 这是现在的样子 这就是我要的 我只需要修复发送并将图像图标添加到屏幕的底角 请指导
  • 如果路径包含主目录波浪号,Python 子进程不会执行 ~

    我正在尝试检测错误并从 django 应用程序重新启动服务器 我正在使用以下代码 try do something except print here subprocess call home my username restart sh
  • 在 Heroku Cedar 上为 Rails 中的资源设置自定义标头

    我有一个使用 Rails 4 0 和资产管道的 cedar 应用程序 我想为资产管道中的所有资产设置自定义标头 如何才能做到这一点 一个简单的方法是使用机架插件 如下所示 class RackAssetFilter def initiali
  • 生成的签名 X.509 客户端证书无效(没有指向其 CA 的证书链)

    我使用 Bouncy Castle 生成 X 509 客户端证书 并使用已知的 CA 来签署它们 首先 我从证书存储中读取 CA 证书 生成客户端证书 并使用 CA 对其进行签名 由于以下问题 证书验证失败 无法为受信任的根颁发机构构建证书
  • Android 中的视图翻转器可以有多少个视图?

    我正在 Android 中开发一个应用程序 我想在其中显示大约 170 张图像 但我希望用户可以通过手指向右或向左查看图像 从互联网上搜索后我得到了一个解决方案 因此我在我的应用程序中使用了View Flipper 当图像计数为15时它将起
  • Matlab向矩阵添加额外的列

    我有一个大小为 216 x 3 的矩阵 我希望向该矩阵添加额外的三列 我认为很简单的事情让我发疯 我原以为它会像下面这样 myData myData zeros length myData 1 3 错误消息如下 然而 两个矩阵具有相同的行数
  • 执行与 Oracle 的连接时,“安全包中没有可用的凭据”

    上次 Windows 更新后 执行与 Oracle 数据库的连接的测试启动失败 并出现 AuthenticationException 下面提供了消息和堆栈跟踪
  • 标签之间的正则表达式,除非转义

    我围绕 Pygments 库制作了一个 PHP 包装器 突出显示代码块 用于代码块检测的正则表达式可以在配置文件 json格式 json 值看起来像这样 codeblock regex pygments pygments JSON 解码后应
  • 如何防止R中的科学记数法? [复制]

    这个问题在这里已经有答案了 我的图以 e 表示法的形式显示 y 轴上的值 我应该使用哪个命令来获取数字形式的值 文件中使用的值是数字形式吗 谢谢 要在整个 R 会话中设置科学记数法的使用 您可以使用scipen选项 从文档 options
  • C++ 后台定时器

    include stdafx h include
  • 如果关系不存在则返回节点

    我正在尝试使用 cypher 创建一个查询 它将 查找 厨师可能拥有的缺失成分 我的图表设置如下 ingredient value is part of gt ingredient ingredient 将有一个名称 染料颜色 的键 值 i
  • Symfony2 登录和安全

    有没有办法可以存储用户上次登录的时间 我正在使用 symfony2 安全配置一切正常 我见过这个基于 Symfony 2 的项目的安全性和登录 这是一个类似的问题 但它不符合我的需要 还有其他解决办法吗 您可以创建一个Authenticat