Description
Take an empty project.
Configure session handling to use pdo with postgresql.
Users coming from in_memory provider.
Login is handled by form_login.
Result:
When login form (/login) comes in for the first time, 1 session is created for the user.
After successful authentication, another session row is created in the session table and/but logged user is still anonymous.
With default (native) session handling everything is working fine.
With mysql the user is logged in, but gets a new session, instead of continuing with the existing one (is it normal?)
So the problem is that session handling with postgre it's unable to get the user logged in.
(the results were the same with using FOSUserBundle)
Symfony: 2.0.1
PHP: 5.3.3-7+squeeze3
Postgre: PostgreSQL 8.4.8
System: Linux dev 2.6.32-5-686 #1 SMP Mon Jun 13 04:13:06 UTC 2011 i686
# app/config/config.yml
imports:
- { resource: parameters.ini }
- { resource: security.yml }
framework:
#esi: ~
translator: { fallback: en }
secret: %secret%
charset: UTF-8
router: { resource: "%kernel.root_dir%/config/routing.yml" }
form: true
csrf_protection: true
validation: { enable_annotations: true }
templating: { engines: ['twig'] } #assets_version: SomeVersionScheme
session:
storage_id: session.storage.pdo
#Twig Configuration
twig:
debug: %kernel.debug%
strict_variables: %kernel.debug%
#Assetic Configuration
assetic:
debug: %kernel.debug%
use_controller: false
filters:
cssrewrite: ~
# closure:
# jar: %kernel.root_dir%/java/compiler.jar
# yui_css:
# jar: %kernel.root_dir%/java/yuicompressor-2.4.2.jar
#Doctrine Configuration
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
#Swiftmailer Configuration
swiftmailer:
transport: %mailer_transport%
host: %mailer_host%
username: %mailer_user%
password: %mailer_password%
jms_security_extra:
secure_controllers: true
secure_all_services: false
parameters:
pdo.db_options:
db_table: session
db_id_col: sess_id
db_data_col: sess_data
db_time_col: sess_time
services:
pdo:
class: PDO
arguments:
dsn: "pgsql:dbname=testdb"
user: testuser
password: testpwd
session.storage.pdo:
class: Symfony\Component\HttpFoundation\SessionStorage\PdoSessionStorage
arguments: [@pdo, %session.storage.options%, %pdo.db_options%]
# app/config/security.yml
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
providers:
in_memory:
users:
mtamas: { password: akarmi, roles: 'ROLE_USER' }
admin: { password: admin, roles: 'ROLE_ADMIN' }
firewalls:
main:
pattern: ^/
anonymous: true
form_login:
check_path: /checklogin
login_path: /login
username_parameter: username
password_parameter: password
post_only: true
always_use_default_target_path: true
default_target_path: /teszt
logout:
path: /logout
target: /
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN