我跟着http://symfony.com/doc/current/book/security.html#stateless-authentication并将标志设置为true。但是,仍在创建会话。我目前正在使用PdoSessionStorage存储会话,如果这会产生任何差异。
firewalls:
api_area:
pattern: ^/api/
stateless: true
http_basic:
realm: "RESTful API"
任何帮助都将不胜感激。
答案 0 :(得分:2)
更新:使用#2200(Symfony 2.1),配置选项framework.session.auto_start
不再存在。只要php-ini
- 设置合适,会话就会始终按需开始。
"无状态身份验证"意味着它没有使用会话进行身份验证,但这并不意味着根本就没有会话。特别是
framework:
session:
auto_start: true
总会有一个活跃的会话
另请注意您已链接的页面上的通知
如果您使用表单登录,即使您将无状态设置为true,Symfony2也会创建一个cookie。
答案 1 :(得分:2)
为了防止其他任何正在努力解决这个问题的人#34; Symfony2似乎总是开始会话,即使PHP将自动启动设置为0并且显然Symfony2配置为不自动启动会话" ...
我发现用于显示Flash消息的代码(如果它们存在的话)实际上是在每个页面上都没有存在的情况下启动会话。
我有:
{% for type, flashMessages in app.session.flashbag.all() %}
{% for flashMessage in flashMessages %}
<div class="alert alert-{{ type }}">
{{ flashMessage }}
</div>
{% endfor %}
{% endfor %}
以及在会话对象上请求flashbag的过程,如果它还不存在则自动启动会话。
如果我将上面的代码块包装在:
中{% if app.session.started %}
...
{%endif%}
问题消失了。
这导致了许多不必要的性能开销 - 因为PHP会话cookie的不必要设置意味着我的非登录页面的缓存策略被破坏了。
希望这有帮助