使用 Symfony 获取未登录用户的安全令牌

2023-11-29

如何为任何用户(而不仅仅是当前登录的用户)获取安全令牌?

我希望能够对从数据库获取的用户调用 isGranted()


isGranted()来自安全服务,因此很难/没有必要使用它来获取角色而不调整会话状态。

不要误会我的意思,这绝对有可能......这会起作用,例如:

public function strangeAction()
{
    // Get your User, however you normally get it
    $user = $userRepository->find($id);
    // Save the current token so you can put it back later
    $previousToken = $this->get("security.context")->getToken();
    // Create a new token
    $token = new UsernamePasswordToken($user, null, "main", $user->getRoles());
    // Update the security context with the new token
    $this->get("security.context")->setToken($token);
    // Now you have access to isGranted()
    if ($this->get("security.context")->isGranted("ROLE_SOMETHING"))
    { /* Do something here */ }
    // Don't forget to reset the token!
    $this->get("security.context")->setToken($previousToken);
}

……但这确实没有意义。

实际上,您不需要令牌。一个更好的方法是添加一个isGranted()方法进入您的 User 实体:

// Namespace\YourBundle\Entity\User.php

class User
{
    ...
    public function isGranted($role)
    {
    return in_array($role, $this->getRoles());
    }
    ...
}

现在您可以在控制器中获取这些角色:

public function notSoStrangeAction()
{
    // Get your User, however you normally get it
    $user = $userRepository->find($id);
    // Find out if that User has a Role associated to it
    if ($user->isGranted("ROLE_SOMETHING"))
    { /* Do something here */ }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Symfony 获取未登录用户的安全令牌 的相关文章

  • 如何以 Magento 方式实现库存过滤器?

    在我的 magento 网站上可以看到缺货的产品 我想要在分层导航中添加一个自定义过滤器 其中显示 排除缺货 当客户单击它时 应该隐藏缺货产品 默认情况下 我在 系统 gt 配置 gt 目录 gt 库存 下启用显示 显示缺货产品 即我希望客
  • header() 错误未在 php 中显示

    我写了一个PHP程序 我用session start and header 函数 我知道在向客户端发送任何内容之前应该使用此函数 没关系 但是为了测试 我向客户端发送了一条测试消息echo test 在使用 header 之前 但我没有收到
  • 如何将 Doctrine Entity Manager 注入 Symfony 4 服务

    我有一个控制器 use Doctrine ORM EntityManagerInterface class ExampleController public function someFunction ExampleService inje
  • PHP mail() 函数不发送邮件

    我有一个小问题 我正在使用一个工作脚本 在我的测试帐户 共享服务器上工作 使用 mail 函数通过 PHP 发送邮件 我刚刚得到了一个专用服务器 但我还无法让该功能发挥作用 在过去的 10 个小时左右的时间里 我阅读了有关 BIND 用于
  • 使用 PhpStorm 删除 CakePHP 中的插件后出现“成员有私人访问错误”

    从我的 CakePHP 框架中删除插件以及与其关联的所有代码行后 我在以下位置收到错误getInitializer的功能autoload static php in my vendor gt composer folder public s
  • 我如何知道请求是否来自 flash swf?

    我有一个用 flash 开发的应用程序 我需要访问一些 php 文件 因此 如果访问来自 swf 则 php 文件会返回一些数据 如何判断请求是否来自Flash 无需将 get post 变量传递给 php 可能是用户代理 推荐人 请记住
  • 使用 PHP/COM/ADSI/LDAP 更改 AD 密码

    我已经被这个问题困扰了好几天了 我尝试了各种解决方案均无济于事 请帮忙 Problem 我们有两个域控制器 它们不属于我们的管理范围 我们能够通过端口 389 上的 LDAP 进行连接 但无法通过端口 636 安全连接 我们正在开发一个系统
  • 如何验证使用 php 上传的文件不包含可执行二进制文件?

    使用简单的 Firefox 插件 黑客可以更改他们想要上传的任何文件的 MIME 类型 绕过文件类型检查器 然后 黑客可以使用 GIMP 等程序将 php 脚本嵌入到图像 音频或任何其他文件的二进制数据中 我该如何检查并防止这种情况发生 您
  • PHP 如果不存在,则从字符串中删除 ','

    我正在运行这段代码 stmt pdo conn gt prepare SELECT from admin where support emails support emails and logged logged and disabled
  • 根据通过 AJAX 请求的用户输入重绘 google 图表

    我有一个谷歌图表从我的数据库中提取数据 它可以按我想要的方式工作 根据 URL 中的 get 请求 它从所选表中提取数据 我想根据下拉菜单中选定的表通过 ajax 更新此图表 我无法突破的部分是通过 ajax 获取数据响应 我认为下面的代码
  • 在 PHP 中将十进制/双精度/浮点值与 PDO 绑定的最佳方法是什么?

    看来类常量只涵盖PDO PARAM BOOL PDO PARAM INT and PDO PARAM STR用于绑定 您只是将十进制 浮点 双精度值绑定为字符串还是有更好的方法来处理它们 MySQLi 允许使用 d 类型表示 double
  • 如何将 yii2 Restful api 中两个表的关系数据显示为 json 格式

    我遇到了将两个表中的数据显示为 JSON 格式并在 yii2 Restful api 上工作的问题 这是我的结构数据库 TABLE volunteer volunteer id int 11 NOT NULL auto increment
  • 从数据库 MYSQL 和 Codeigniter 获取信息

    如果你们需要其他信息 上一个问题就在这里 从数据库中获取信息 https stackoverflow com questions 13336744 fetching information from the database 另一个更新 尽
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • PHP 时间间隔

    我正在寻找一个看起来应该非常简单的解决方案 但似乎我不能在这里找到任何好的答案 而且我自己似乎无法让它发挥作用 我正在寻找的是设置开始时间 结束时间 然后迭代给定时间间隔之间的一组时间 例如 上午 9 00 下午 5 00 是开始时间 这些
  • 高效插入和更新时检查唯一性

    我的员工表中有 2 列 每列值必须是唯一的 staff code staff name staff id staff code staff name 1 MGT Management 2 IT IT staff 当向表中插入或更新项目时 我
  • PHP 文件服务脚本:下载不可靠?

    这篇文章最初是关于 ServerFault 的一个问题 https serverfault com questions 131156 user receiving partial downloads https serverfault co
  • 如何移动 Zend_Layout 的“视图”

    通常它会是这样的结构 application modules somemodule views scripts index index phtml 我如何将其移动到 application templates somemodule temp
  • 如何获取 URL 中未知的 $_GET 值的数组?

    我正在使用一个在线购物车 它接受订购的商品并通过 URL 将其唯一 ID 传递到 process php 页面 所以 URL 看起来像这样 process php code 1 231 code 2 532 code 3 342 Anoth
  • 如何显示 PHP 对象

    我有这样的代码 dataRecord1 client gt GetRecord token table filter echo pre print r dataRecord1 echo pre foreach dataRecord1 gt

随机推荐

  • 如何在Python中连接2个字典列表?

    我有 2 个这样的列表 l1 a 1 b 2 c 3 d 4 a 5 b 6 c 7 d 8 l2 a 5 b 6 e 100 a 1 b 2 e 101 我想获得一份清单l3 这是一个连接l1 and l2其中的值 a and b 两者相
  • groovy.json.JsonSlurper 解析 JSON

    我正在尝试在我的 gradle 任务中解析 JSON 文件 CODE def jsonFile files json myJSON json def list new JsonSlurper parseText jsonFile JSON
  • 为什么在调用 ResultSet.refreshRow() 时会看到 NotUpdatable?

    当我调用以下行时 Statement statement connection createStatement ResultSet TYPE SCROLL SENSITIVE ResultSet CONCUR READ ONLY Resul
  • C UNIX shell 中的管道

    我不太确定如何在两个子进程之间创建管道 我就是这样做的 pipe fd 0 Create a pipe proc1 fork Child process 1 if proc1 0 close fd 0 process1 doenst nee
  • 如何使用准备好的语句

    有人建议使用准备好的语句 但我不知道如何使用它 我必须在代码中进行哪些更改 try Class forName sun jdbc odbc JdbcOdbcDriver System out println n Driver loaded
  • 从 mysql 的校验和表中选择并仅返回校验和(而不是表)

    当我运行 mysql gt CHECKSUM TABLE mytable 时 我得到以下结果 Table Checksum mydb mytable 1679935596 如何在一条mysql语句中选择并仅返回上述结果中的校验和 而不是表
  • 如何将 CTRL-B 按键功能模拟到条形码

    这是我在这个网站上的第一篇文章 似乎无法解决问题 How do I emulate key function Ctrl B to a barcode so i can scan the barcode with a scanner with
  • 如何通过 JavaScript 重新加载我的 chrome 扩展?

    我试图做到这一点 如果您按下我的 chrome 扩展程序中弹出窗口中的按钮 它将重新加载扩展程序 那可能吗 刚刚发现这个方法 这正是我想要的 chrome runtime reload
  • 有什么方法可以在后台使用 FirebaseMessagingService 从推送通知中获取数据吗?

    我在用着FirebaseMessagingService用于我的推送通知 它正在按应用程序中的预期工作 onMessageReceived被调用 我可以获取通知标题和正文 数据有效负载 并将取决于有效负载数据的反应发送到我的Activity
  • c# 如何获取添加的事件?

    我坐在电脑前 想知道如何获取所有添加的事件 我刚刚读了一些文章 包括C 睡前故事为了更好地理解事件 我想我现在明白了主要想法 但我仍然不知道如何获取事件触发时执行的方法 委托的列表 实际上 就我而言 如果我知道是否有任何方法 委托被分配给某
  • 使画布高度自动

    我有画布
  • 有没有办法仅当元素是数组时才调用map方法?

    我正在使用查询字符串库来解析 URL 中的查询参数 当查询参数采用以下形式时 foo bar lib 返回一个像这样的对象 foo bar 当在表格中 foo bar1 bar2 该对象看起来像这样 foo bar1 bar2 我想应用该功
  • 图表和模型有什么区别

    UML 图和 UML 模型有什么区别 我创建了几个 UML 图 例如活动图和用例图 该指南要求我准备model我为演示设计的软件 这是否意味着我必须使用我制作的 UML 图以及内容描述 或者我是否需要诸如模型或线框图之类的东西来展示软件 T
  • 在Java中更改Windows用户

    是否可以使用Java设置不同的Windows用户 我有以下问题 我的应用程序以管理员身份执行编写的程序 但是 在某一时刻我需要切换 Windows 用户以便从命令行执行程序 该程序只能由该用户访问 由于其许可证 我无法以管理员身份启动它 因
  • Visual Studio 未将设计器连接到代码隐藏

    我上周开始使用 VisualStudio 2013 并且非常喜欢它 但我主要是编写控制器和 JavaScript 代码 但是 当我向 Web 项目内的 Webform 添加控件时 它不会在 designer cs 文件内生成代码 我可以打开
  • 随着框架变化动态缩放 iFrame 内容

    我正在使用最初以 1920x1080 渲染的仪表板 带有一系列控件和图表 图形的背景图像 该仪表板需要在 iFrame 的内容中查看 以便可以将其嵌入到第 3 方门户页面中 现在 在具有 iFrame 的 HTML 文档上 取决于客户端使用
  • C# 与 u-blox GPS 的串行通信

    我有一个来自 u blox com 的 GPS 带有 USB 连接和驱动程序 驱动程序会安装一个虚拟 COM 端口 当您插入 USB 时 该端口就会弹出 然后 我可以使用超级终端来观察来自 GPS 的数据流 然后我想要我的程序中的数据 没那
  • 张量流:使用 tf.greater 和简单的greater 有什么区别?

    我想了解这两个函数之间的区别 就生成的 tf 图而言 def simple relu x if tf greater x 0 return x else return 0 and def simple relu2 x if x gt 0 r
  • JSF 支持 bean 结构(最佳实践)

    我希望在这篇文章中 我可以了解人们对 JSF 页面和支持 bean 之间的接口最佳实践的意见 我永远无法确定的一件事是我的支持豆的结构 此外 我从来没有找到关于这个主题的好文章 哪些属性属于哪些支持 bean 什么时候适合向给定 bean
  • 使用 Symfony 获取未登录用户的安全令牌

    如何为任何用户 而不仅仅是当前登录的用户 获取安全令牌 我希望能够对从数据库获取的用户调用 isGranted isGranted 来自安全服务 因此很难 没有必要使用它来获取角色而不调整会话状态 不要误会我的意思 这绝对有可能 这会起作用