我正在尝试使用Symfony 2安全组件,但是我在IE9上遇到了问题。它可以在任何其他浏览器中工作,我觉得这很奇怪。Symfony 版本 2.0.16。
控制器就像"在书中"。我有一个用于登录表单的自定义模板文件,使用文档中的文件无济于事。还制作了自定义路由路径,但在安全性配置文件中指定了它们。这是安全配置文件,我在那里做了一些更改,但我认为一切都井井有条......
security:
encoders:
AcmeMyBundleEntityUser:
algorithm: sha1
encode_as_base64: true
iterations: 5
role_hierarchy:
ROLE_CLIENT: ROLE_USER
ROLE_MANAGER: ROLE_USER
ROLE_ADMIN: [ROLE_USER, ROLE_MANAGER, ROLE_ALLOWED_TO_SWITCH]
providers:
main:
entity: { class: AcmeMyBundleEntityUser, property: email }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
dev_custom:
pattern: ^/createUser
security: false
login:
pattern: ^/(login-custom|remind-pass)$
security: false
secured_area:
pattern: ^/
form_login:
login_path: /login-custom
check_path: /login-check-custom
logout:
path: /logout-custom
target: /
access_control:
- { path: ^/, roles: ROLE_USER }
在IE9中提交表单后,我只是被重定向回表单,而不验证数据。在日志文件中,我发现:
[2012-08-14 02:51:00] security.INFO:身份验证请求失败:您的会话已超时,或者您已禁用 Cookie。[] [][2012-08-14 02:51:00] 安全性。调试:重定向到/login[] []
当然,我启用了饼干。
在IE控制台中,有一个警告"HTML1113进入怪癖模式"。我做错了什么?
我在这里找到了答案:即复杂的子域cookie问题
简而言之:即当子域包含"undesrcore"时,静默地删除cookie。我以为我错误地配置了安全组件或模板或标头有问题,但事实并非如此。
以下是我在一个项目中设置的配置,该配置在本地环境中的Chrome/Firefox/Safari中运行良好,但在Internet Explorer中则不然。
我可以看到使用小提琴手,Internet Explorer没有在浏览器中保留会话cookie。
在生产环境中一切正常。
我意识到删除或设置为0的值:
cookie_lifetime: 86400 # 一天,饼干生命周期
gc_maxlifetime:1800 # 30 分钟,会话生存期
允许登录,所以我为开发环境设置了这个 conf.。
我的配置中有以下配置
framework:
session:
handler_id: session.handler.pdo
name: sessid
**cookie_lifetime: 86400 # One day, cookie lifetime
gc_maxlifetime: 1800 # 30 minutes, session lifetime**
lifetime: 84600
gc_probability: 5
gc_divisor: 100
其中handler_id设置为管理mysql表中的会话。 my_db_options:#this 是一个会话存储表(有关更多信息,请参阅 symfony2 文档)
pdo.db_options:
db_table: sessions
db_id_col: ses_id
db_data_col: ses_data
db_time_col: ses_time
db_lifetime_col: ses_lifetime
服务.yml
session.handler.pdo:
class: SymfonyComponentHttpFoundationSessionStorageHandlerLegacyPdoSessionHandler #PdoSessionHandler (prev to versión 2.6.2)
arguments: ["@session.database", "%pdo.db_options%"]
希望这有帮助或给你一个关于你的symfony设置的线索。