我正在尝试使用Symfony 2安全组件,但我遇到了IE9的问题。它适用于任何其他浏览器,我觉得很奇怪。 Symfony版本2.0.16。
控制器就像'在书中'。我有一个登录表单的自定义模板文件,使用文档中的一个没有帮助。还制作了自定义路由路径,但在seciurity配置文件中指定了它们。这是安全配置文件,我在那里稍微改了一下,但我认为这些都是有序的......
security:
encoders:
Acme\MyBundle\Entity\User:
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: Acme\MyBundle\Entity\User, 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] security.DEBUG:重定向到/ login [] []
当然我已启用Cookie。
在ie控制台中有一个警告'HTML1113 goin to quirks mode'。 我做错了什么?
答案 0 :(得分:0)
我在这里找到了答案: ie complicated subdomain cookie problem
简而言之:即当子域包含'unexrcore'时,默默地删除cookie。我以为我错误配置了安全组件或者模板或标题出了问题,但事实并非如此。
答案 1 :(得分:0)
以下是我在项目中设置的配置,该项目在本地环境中的Chrome / Firefox / Safari中运行良好,但在Internet Explorer中没有。
我可以看到使用fiddler,Internet Explorer没有在浏览器中保留会话cookie。
在生产环境中,一切都很好。
我意识到删除或设置为0的值为
cookie_lifetime:86400#一天,Cookie生存期
gc_maxlifetime:1800#30分钟,会话有效期
允许登录,所以我设置了这个conf。对于开发环境。
我的config.yml
中有以下配置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:#这是一个会话存储表(有关详细信息,请参阅symfony2 doc)
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
services.yml
session.handler.pdo:
class: Symfony\Component\HttpFoundation\Session\Storage\Handler\LegacyPdoSessionHandler #PdoSessionHandler (prev to versión 2.6.2)
arguments: ["@session.database", "%pdo.db_options%"]
希望这会对您的symfony设置有所帮助或提供线索。