in memory
es la mas simple: se trata de tener a los usuarios / con sus passwords (planos sin encriptar) y roles(categoria/grupo de usuarios que tendran algun acceso especifico dentreo de la aplicacion) en un archivo de configuracion (security.yml)
entonces, en security.yml:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
#plaintext: password sin encriptacion
providers:
in_memory:
memory:
users:
ibazan:
password: 123123
roles: ROLE_USER
admin:
password: admin
roles: ROLE_ADMIN
firewalls:
main:
form_login:
login_path: auth.login
check_path: auth.login
logout:
path: /logout
target: /
access_control:
- { path: ^/prueba/admins, roles: ROLE_ADMIN }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: [ROLE_ADMIN,ROLE_USER] }
login_path: hace referencia al name del action que levanta la pagina de login
check_path: hace referencia al name del action que se dispara al querer checkear la autenticacion
logout: lo maneja symfony
access_control:
es una manera de configurar los permisos a las paginas ^/ significa que las mismas deben tener rutas que empiecen con...XXXX
hay que tener cuidado con el orden, por ejemplo, si hubiesemos puesto path: ^/prueba/admins, roles: ROLE_ADMIN
al final de la lista, un usuario con con rol_user hubiese podido acceder ya que antes esta el path: ^/
ahora debemos crear el controller para el formulario login
src/AppBundle/Controller/AuthController.php:
class AuthController extends Controller
{
/**
* @Route("/login", name="auth.login")
*/
public function loginAction(Request $request) {
$authenticationUtils = $this->get('security.authentication_utils');
$error = $authenticationUtils->getLastAuthenticationError();
// obtiene un error si lo hubiese
return $this->render('auth/login.html.twig', [
'error' => $error,
]);
}
en la vista del login lo importante es que
el action del form apunte a este action y que sea del tipo post.
ademas lo campos de nombre de usuario se debe llamar _username y el de contraseña _password
<form action="{{ path('auth.login') }}" method="post">
<div class="row">
<div class="large-12 columns">
<input type="text" name="_username" placeholder="Username" />
</div>
</div>
<div class="row">
<div class="large-12 columns">
<input type="password" name="_password" placeholder="Password" />
</div>
</div>
<div class="row">
<div class="large-12 large-centered columns">
<input type="submit" class="button expand" value="Log In"/>
</div>
</div>
</form>
otra manera de dar acceso a los actions, es hacerlo en el mismo controller a traes de annotations
class PruebaController extends Controller{
/**
* @Security("has_role('ROLE_USER')")
*
* @Route("/users", name="prueba_users")
*/
public function usersAction() {
//bla bla bla
}
}
Suscribirse a:
Enviar comentarios (Atom)
linux ubuntu mint actualizar chrome
desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable
-
por consola y desde la raiz de tu proyecto php artisan --version
-
en nuestro proyecto creamos una carpeta llamada donde estaran todas nuestras clases, por ejemplo una llamada: MiApp adentro de esta irian b...
-
Integridad al nivel de la base de datos Oracle Oracle valida la integridad de la base de datos y presenta los siguientes mensajes de erro...
No hay comentarios:
Publicar un comentario