Estoy primero especificando los usuarios en el archivo de configuracion, pues es la primera vez que uso Symfony, pero luego la idea es que cuando esto funcione pasar a usar usuarios en la base de datos.
Este es el archivo security.yml:
Código:
Y este el archivo de route.yml:jms_security_extra: secure_all_services: false expressions: true security: encoders: Symfony\Component\Security\Core\User\User: plaintext role_hierarchy: ROLE_ADMIN: ROLE_USER ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] providers: in_memory: memory: users: user: { password: userpass, roles: [ 'ROLE_USER' ] } admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] } firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false login: pattern: ^/login$ security: false secured_area: pattern: ^/(secured/.*|login_check) form_login: check_path: /login_check login_path: /login logout: path: /logout target: / #anonymous: ~ #http_basic: # realm: "Secured Demo Area" access_control: #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
Código:
El controlador del formulario de login:compartida_compartida: resource: "@CompartidaCompartidaBundle/Resources/config/routing.yml" prefix: / login_check: pattern: /login_check login: pattern: /login defaults: { _controller:CompartidaCompartidaBundle:Security:login } logout: pattern: /logout
Código:
La plantilla del formulario de login:<?php namespace Compartida\CompartidaBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\Security\Core\SecurityContext; class SecurityController extends Controller { public function loginAction() { $peticion = $this->getRequest(); $sesion = $peticion->getSession(); // obtiene el error de inicio de sesión si lo hay if ($peticion->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) { $error = $peticion->attributes->get(SecurityContext::AUTHENTICATION_ERROR); } else { $error = $sesion->get(SecurityContext::AUTHENTICATION_ERROR); } return $this->render('CompartidaCompartidaBundle:Security:login.html.twig', array( // el último nombre de usuario ingresado por el usuario 'ultimo_nombreusuario' => $sesion->get(SecurityContext::LAST_USERNAME), 'error' => $error, )); } } ?>
Código:
{% extends 'CompartidaCompartidaBundle::base.html.twig' %} {% block main %} {% if error %} <p>{{ error.message }}</p> {% endif %} <form action="{{ path('login_check') }}" method="post"> <label for="nombreusuario">Nombre:</label> <input type="text" id="nombreusuario" name="_username" value="{{ ultimo_nombreusuario }}" /> <label for="password">Password:</label> <input type="password" id="password" name="_password" /> <input type="submit" name="login" /> </form> {% endblock %} {% block login %}{% endblock %}