You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Symfony ParamConverter注解表达式中获取当前登录用户?

解决Symfony ParamConverter表达式中访问当前登录用户的问题

默认情况下,ParamConverter的表达式上下文并没有直接提供user变量,直接使用会抛出变量不存在的错误。要访问当前登录用户,需通过Symfony的token_storage服务来获取:

正确的表达式写法

使用token_storage.getToken().getUser()获取当前登录用户,建议增加空值判断,避免用户未登录时触发报错:

/**
 * @ParamConverter("order", class=Order::class, options={
 *     "expr": "repository.findByUser(token_storage.getToken() ? token_storage.getToken().getUser() : null)"
 * })
 */
public function getOneAction()
{
}

原理说明

  • token_storage是Symfony容器中SecurityTokenStorageInterface服务的别名,用于管理当前用户的认证令牌;
  • getToken()返回当前请求的认证令牌(用户未登录时会返回null);
  • getUser()从令牌中提取当前登录的用户对象。

如果业务场景确保用户必须登录才能访问该接口,可简化表达式省略空值判断:

/**
 * @ParamConverter("order", class=Order::class, options={
 *     "expr": "repository.findByUser(token_storage.getToken().getUser())"
 * })
 */
public function getOneAction()
{
}

内容的提问来源于stack exchange,提问作者gremo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:41:58