我可以完全阻止 Symfony 安全组件使用会话吗?
Can I prevent the Symfony security component from using the session at all?
我正在开发一个 Web 应用程序,其中对每个单独请求的身份验证将在 php 之外完成。我本来打算根本不使用会话,但安全组件正在使用它。
此外,用户对象本身并不是一个 Doctrine 实体,但它有一个 属性 是一个实体。这会导致问题,因为当用户从会话中反序列化时,属性 的值是一个分离的代理,使其无法使用。
如果框架只为每个请求调用我的用户提供者,而根本不使用会话(它也可以让我不再担心会话劫持),我会很高兴,但从文档中没有' 好像是这样的选择。
如果那不可能,在反序列化时重新附加代理实体是否可行? user class serialize
方法没有用,因为那里没有实体管理器。有没有我可以 subscribe/listen 参加的活动?
P.S。我正在使用捆绑包授权功能,我不想禁用整个捆绑包。
是的,您可以禁用 session。
在 security.yaml
安全组件配置的 firewalls
选项下,您可以为需要无状态的防火墙添加 stateless: true
。
更多相关信息:https://symfony.com/doc/4.4/security/guard_authentication.html
您可以禁用 session 完全将其添加到 framework.yaml
# config/packages/framework.yaml
session:
enabled: true
更多关于 session 的信息:https://symfony.com/doc/current/session.html#configuration
如果您反序列化 User object 并获得分离的代理 class,您可以尝试 $entityManager->refresh($object)
它在您的 UserProvider 中 - 这应该是一个服务?或者甚至尝试再次获取,假设您有它的 ID?
我正在开发一个 Web 应用程序,其中对每个单独请求的身份验证将在 php 之外完成。我本来打算根本不使用会话,但安全组件正在使用它。
此外,用户对象本身并不是一个 Doctrine 实体,但它有一个 属性 是一个实体。这会导致问题,因为当用户从会话中反序列化时,属性 的值是一个分离的代理,使其无法使用。
如果框架只为每个请求调用我的用户提供者,而根本不使用会话(它也可以让我不再担心会话劫持),我会很高兴,但从文档中没有' 好像是这样的选择。
如果那不可能,在反序列化时重新附加代理实体是否可行? user class serialize
方法没有用,因为那里没有实体管理器。有没有我可以 subscribe/listen 参加的活动?
P.S。我正在使用捆绑包授权功能,我不想禁用整个捆绑包。
是的,您可以禁用 session。
在 security.yaml
安全组件配置的 firewalls
选项下,您可以为需要无状态的防火墙添加 stateless: true
。
更多相关信息:https://symfony.com/doc/4.4/security/guard_authentication.html
您可以禁用 session 完全将其添加到 framework.yaml
# config/packages/framework.yaml
session:
enabled: true
更多关于 session 的信息:https://symfony.com/doc/current/session.html#configuration
如果您反序列化 User object 并获得分离的代理 class,您可以尝试 $entityManager->refresh($object)
它在您的 UserProvider 中 - 这应该是一个服务?或者甚至尝试再次获取,假设您有它的 ID?