Muchas gracias maestro por tu generosidad al compartir esta enseñanza, resultando muy fundamental y de gran valor, para lograr un conocimiento bien detallado en el uso de esta gran herramienta. Felicidades totales...
Terminado el primer video y a verdad que me encantó, muy bueno para una introducción. La verdad que me parece muy completo para ir iniciando en todo lo que es Security y a seguir aprendiendo. Muchas Graacias Dave's porque siempre respondes a los mensajes y colaboras en la resolución de errores.
Fantástico tutorial. Estuve semanas buscando más información además de la documentación de Spring Security 6 ya que no la había entendido muy bien. Muchas gracias!
La respuesta simple parte por dos cosas.. Lo primero es que la clase está marcada con la anotación @Component lo que hace que Spring la detecte automáticamente como un Bean y pueda crear una instancia de la misma. Lo segundo es que la clase en sí implemente la interfaz CommandLineRunner, esto hace que Spring una vez creada la instancia del Bean y este implemente este interfaz, ejecute el método run(). En una App con Spring puedes tener varios Beans que implementen esta interfaz, los que quieras, no tiene que ser uno solo… pero si quieres que se ejecuten en determinado orden puedes utilera la anotación @Order Espero que te haya podido ayudar. Saludos
Hola @fedeSuperPro, Mira, no hay nada escrito en que se pueda retornar directamente la Entidad o un Optional, con el Optional nos aseguramos de que vamos a tener un resultado, y no lanzaremos un NullPointerException por cualquier motivo, si te fijas en la clase SecurityUserDetailsService donde se hace la llamada a ese método es mucho más cómodo preguntar si existe el usuario utilizando los métodos de Optional (isPresent), no es más simple pero por lo menos para mi es más claro. No hay una ventaja en cuanto a rendimiento ni nada parecido. Concidero una buena práctica utilizar Optional cuando no estamos seguro de que la Entidad existe y que el resultado puede ser vacío. Pero no hay nada más que eso. Puedes utilizar la via que quieras siempre y cuando el código sea lo más claro posible para el próximo desarrollador o para ti mismo cuando veas ese código 2 años después. Saludos
Gracias. Todo funcionó a la perfección, sin embargo solamente con las peticiones get. Con post, put,... tengo problemas con csrf, y no me gustaría desactivarlo. ¿Cómo podría solucionarlo?
Hola @Fran-lu2rf, gracias por pasar por acá. El habilitar o no CSRF va a depender de tu desarrollo, si lo que tienes es una API REST, la teoría es que debe ser stateless, no debe aceptar o utilizar datos del usuario provenientes de cookies, incluso, aunque en la petición vengan cookies, estas deben ser ignoradas. Si utilizas cookies para la autentificación entonces CSRF debe estar habilitada, si utilizas autentificación básica para acceder a esos servicios entonces dejarían de ser stateless y necesitas habilitar CSRF. Por lo general para asegurar APIs REST se utilizan otros mecanismos de autentificación, por lo general OAuth, estoy tratando de preparar un video sobre el tema porque ha sido consulta permanente. Si tienes alguna otra duda, me puedes escribir al email. Saludos
Hola, he configurado tal cual, pero cuando estaba por default me funcionó de maravilla, cuando personalicé, ya no me está autenticando nada, permite ver sin autorización de nada....
Hola Xavier, Si mueves el bean passwordEncoder que todavía está en esa clase entonces la puedes eliminar. Ese bean es necesario para manejar la codificación de las contraseñas, igual este tema hay que complementarlo con los otros videos que le siguen hablando de autorización y ahí verás un nuevo bean el securityFilterChain, pero si, es como dices, podemos eliminar esa clase siempre que dejemos el bean passwordEncoder en otro lugar. Saludos y gracias por pasar por acá.
Hola, al iniciar el programa me aparece este error "failed to lazily initialize a collection of role: com.shop.demo.model.User.authorities: could not initialize proxy - no Session" tienes alguna idea de que puedo estar haciendo mal?? vi 3 veces el video viendo si hice algo mal pero no encuentro nada :c
Hola Alfonso, gracias por pasar por acá. En un proyecto de Spring boot con solo agregar la dependencia de Spring Security ya debe generar la contraseña. Si tienes problemas sube tu código a GitHub y escríbeme al mail para revisarlo. Saludos.
Hola, tienes una guía o video que expliques como utilizar el IDE Intellij? Auto completados, accesos rapidos, como crear plantillas, etc? me fachina la facilidad y rapidez con la que lo haces. Saludos, excelente video!
Hola, no tengo guias de intellij en el canal, buen IDE, en mi opinión, para Java es lo mejor. También para hacer las cosas más rápidas sobre todo para los videos y no tomarme mucho tiempo , en la mayoría de los casos de autocompletados, son gracias a Github Copilot, una IA para desarrollar. Saludos y gracias por pasar por acá.
Hola Mariano, gracias por pasar por el canal. Debo hacer un video de este tema, sobre todo de Spring Boot, igual si estás comenzando te recomiendo ver este tema. Es sobre inyección de dependencias, concepto que se ve tanto en Spring Boot que parece algo normal. ruclips.net/video/b2TJpouhURQ/видео.html Saludos
Gracias por pasar por acá, la verdad creo que van a salir temas poco a poco, la mayoría de las cosas que vemos con spring boot 3 ya se podían implementar con la versión anterior, lo que muchos han seguido ocupando métodos que hacía mucho tiempo estaban marcados como deprecados. Saludos.
Si, he sacada algo de Spring Security, aunque me quedan como 2 o 3 temas por tocar, también hay cosas pendientes con JPA, en fin, muchos temas y poco tiempo, pero van a salir xd. Saludos
Genial video, enhorabuena!! Tengo un problema, a pesar de indicarle las credenciales que quiero usar, me sigue generando una contraseña por defecto y me impide usar las que yo le he indicado. He seguido los mismos pasos que tu pero nada, no hay manera de resolverlo.
Hola, asegúrate de que la clase SecurityUserDetailsService tenga la anotación @Service y WebSecurityConfig la anotación @Configuration, si puedes compartir el código lo puedo revisar si me pasas el link al email. Saludos
En realidad, no, voy sacando videos sobre temas específicos, he sacado varios de Spring Security, faltan un par más, están relacionados, pero pueden verse de forma independiente. Lo mismo hice cuando saqué varios videos de Spring Data JPA. Consume algo de tiempo y a veces quisiera publicar más de lo que puedo. Gracias por pasar por acá.
@@uncledavescode hay posibilidades de que cuelgues la base de datos para descargarla. Anoche me quedé en la parte de agregar la base de datos justamente porque no la tengo
La base de datos como tal no la tengo, con Spring Data JPA, con la forma en que configures la aplicación, las tablas se puden ir creando solas, que creo que es el caso. Lo que necesitas tener es cualquier motor de BD instalado en tu PC, crear una BD manual y configurar la conexión a la misma. Si tienes dudas me puedes escribir al email, pero además en el canal hay varios temas relacionados a Spring Data JPA.
Si lo que tienes es SQL cambia spring.jpa.hibernate.ddl-auto=create spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect spring.datasource.url=jdbc:mysql://localhost:3306/base_de_datos spring.datasource.username=usuario spring.datasource.password=contraseña lo bueno de Data JPA es eso, una buena abstracción para cualquier tipo de BD
Gracias por pasar por acá. Hay un par de videos antes hablando de Spring Security, otros de Spring Data JPA. Este video no es el más básico de todos, parte de la idea que se conoce las bases anteriores. Saludos
No se a que te refieres, este video se trata de como autentificar un usuario que tengas registrado en un BD, a diferencia de los otros que el usuario estaba en duro, se agrega JPA para ese tema. Si tienes dudas sobre el tema escríbeme al correo para ver bien lo que dices. Saludos
bro, muy chido y todo el video, pero explica cada cosa, no asumas que la gente sabe de lo que estas hablando ni esperes que la gente entienda sin explicar, explica como funciona cada cosa y no solo escribas codigo, la verdad no entendi un culo para que sirve cada cosa
me reí un rato xd. Ahora en serio, si, tienes razón, ese video no es para comenzar, en el canal hay una lista de reproducción titulada Spring Boot, va de menso a más ahí. Saludos
Seguridad es uno de los temas mas avanzados que hay en lo que se refiere a hacer apis con spring boot. Si no entendiste un culo es porque no sabes nada. Debes buscar tutoriales para principiantes y no esto.
Muchas gracias maestro por tu generosidad al compartir esta enseñanza, resultando muy fundamental y de gran valor, para lograr un conocimiento bien detallado en el uso de esta gran herramienta. Felicidades totales...
La mejor explicacion que vas a encontrar en espanol. Que bueno encontrar a un cubano explicando estos temas.
Gracias!!! Saludos (-:
Gracias tio Dave. Porque el tutorial es con lo mas reciente y no hay casi incluso a día de hoy.
Gracias por pasar por acá. Saludos
El mejor tutorial que he encontrado en RUclips hasta la fecha sobre este tema. Un millon de gracias.
Gracias a ti, saludos
Terminado el primer video y a verdad que me encantó, muy bueno para una introducción. La verdad que me parece muy completo para ir iniciando en todo lo que es Security y a seguir aprendiendo. Muchas Graacias Dave's porque siempre respondes a los mensajes y colaboras en la resolución de errores.
Gracias a ti. Saludos!!!
@@uncledavescode a vos por el apoyo genio
Este canal sera grande 🌋
(͠≖ ͜ʖ͠≖)👌 Saludos!!!
Fantástico tutorial. Estuve semanas buscando más información además de la documentación de Spring Security 6 ya que no la había entendido muy bien. Muchas gracias!
Gracias por pasar por acá. Si, la documentación de Spring deja un poco que desear, para cualquiera de sus proyectos, no solo Spring Security. Saludos
Muchísimas gracias, esta información es ORO PURO, es el video más completo. 🤑
muy buen video, 2 dias intentando aprender y es el mas claro
Gracias por pasar por acá.. igual voy a tener que actualizar esos videos. Saludos
Muhcas gracias no dejes de crear contenido tienes un seguidor por aqui
Gracias a ti! Saludos
Excelente video!!!
Gracias por tanto!!! like desde 3 cuentas
Gracias a ti!! Jajajajajaja.
Esto es lo que necesitaba
Gracias a ti! Saludos
Si duda el mejor ..gracias
Gracias, saludos
gracias, gran contenido, de lo mejorcito que he visto.
Muchas gracias!
Gracias por el contenido, por favor sigue profundizando sobre estos temas! estaria bueno la implementacion de Oauth2 con JWT
Casi quedo ciego pero fue un buen video :')
😂
Buen tutorial, tengo una duda, como es que spring boot sabe que debe correr la clase Runner si no fue invocada por ningún controlador
La respuesta simple parte por dos cosas..
Lo primero es que la clase está marcada con la anotación @Component lo que hace que Spring la detecte automáticamente como un Bean y pueda crear una instancia de la misma.
Lo segundo es que la clase en sí implemente la interfaz CommandLineRunner, esto hace que Spring una vez creada la instancia del Bean y este implemente este interfaz, ejecute el método run().
En una App con Spring puedes tener varios Beans que implementen esta interfaz, los que quieras, no tiene que ser uno solo… pero si quieres que se ejecuten en determinado orden puedes utilera la anotación @Order
Espero que te haya podido ayudar. Saludos
Buenas, xq en el userRepository pones la devolucion del user como optional?
Hola @fedeSuperPro,
Mira, no hay nada escrito en que se pueda retornar directamente la Entidad o un Optional, con el Optional nos aseguramos de que vamos a tener un resultado, y no lanzaremos un NullPointerException por cualquier motivo, si te fijas en la clase SecurityUserDetailsService donde se hace la llamada a ese método es mucho más cómodo preguntar si existe el usuario utilizando los métodos de Optional (isPresent), no es más simple pero por lo menos para mi es más claro. No hay una ventaja en cuanto a rendimiento ni nada parecido.
Concidero una buena práctica utilizar Optional cuando no estamos seguro de que la Entidad existe y que el resultado puede ser vacío.
Pero no hay nada más que eso. Puedes utilizar la via que quieras siempre y cuando el código sea lo más claro posible para el próximo desarrollador o para ti mismo cuando veas ese código 2 años después.
Saludos
Gracias. Todo funcionó a la perfección, sin embargo solamente con las peticiones get. Con post, put,... tengo problemas con csrf, y no me gustaría desactivarlo. ¿Cómo podría solucionarlo?
Hola @Fran-lu2rf, gracias por pasar por acá.
El habilitar o no CSRF va a depender de tu desarrollo, si lo que tienes es una API REST, la teoría es que debe ser stateless, no debe aceptar o utilizar datos del usuario provenientes de cookies, incluso, aunque en la petición vengan cookies, estas deben ser ignoradas.
Si utilizas cookies para la autentificación entonces CSRF debe estar habilitada, si utilizas autentificación básica para acceder a esos servicios entonces dejarían de ser stateless y necesitas habilitar CSRF.
Por lo general para asegurar APIs REST se utilizan otros mecanismos de autentificación, por lo general OAuth, estoy tratando de preparar un video sobre el tema porque ha sido consulta permanente.
Si tienes alguna otra duda, me puedes escribir al email.
Saludos
Pudiste solucionarlo?
@@maurenrivera9105 Hola, voy a volver a retomar el tema, lo que me quedó claro es que debo de utilizar Oauth2.
Como hace para añadir las dependencias en intellj para su proyecto luego de crearlo a mi no me sale esa opción de edit starter
Hola @manafun3, para ese momento tenía un plugin pago, pero lo dejé de utilizar, la verdad que no aportaba mucho. Spring Boot Helper
Saludos
@@uncledavescode gracias ☺️
Hola, he configurado tal cual, pero cuando estaba por default me funcionó de maravilla, cuando personalicé, ya no me está autenticando nada, permite ver sin autorización de nada....
Hola Jhuliana, me puedes escribir al mail con los detalles y ahí te puedo ayudar. Gracias por pasar por acá.Saludos
que usas ña completar código
Copilot, lo uso más en los videos que en la vida real. Me ayuda a que lo videos duren menos. (-;
Github del código no esta actualizado tienes el código completo
Actualizado el código estimado, gracias por pasar por acá. Saludos
Thank you
Anytime (-;
Amigo termine el video muy bueno pero clase WebSecurityConfig ya no tendría ninguna funcionalidad creo esta de mas ya que no se la usa para nada ?
Hola Xavier,
Si mueves el bean passwordEncoder que todavía está en esa clase entonces la puedes eliminar.
Ese bean es necesario para manejar la codificación de las contraseñas, igual este tema hay que complementarlo con los otros videos que le siguen hablando de autorización y ahí verás un nuevo bean el securityFilterChain, pero si, es como dices, podemos eliminar esa clase siempre que dejemos el bean passwordEncoder en otro lugar.
Saludos y gracias por pasar por acá.
Hola, al iniciar el programa me aparece este error "failed to lazily initialize a collection of role: com.shop.demo.model.User.authorities: could not initialize proxy - no Session" tienes alguna idea de que puedo estar haciendo mal?? vi 3 veces el video viendo si hice algo mal pero no encuentro nada :c
Hola, si puedes compartir el código que tengas y enviarme el enlace a mi correo. Ahí puedo revisar y te digo que si veo algo. Saludos
Tiene alguna extension o algo para hacer la importación de dependencias de manera local?? yo no tengo esas opciones en mi intellij Community
Hola, a que te refieres con importación de dependencias? hablas de maven?
@@uncledavescode si justamente eso
Ok, para las dependencias de Springboot prueba con el EditStarters
Saludos.
plugins.jetbrains.com/plugin/11543-editstarters
Por que no me genera la contraseña de spring security?
Hola Alfonso, gracias por pasar por acá.
En un proyecto de Spring boot con solo agregar la dependencia de Spring Security ya debe generar la contraseña. Si tienes problemas sube tu código a GitHub y escríbeme al mail para revisarlo. Saludos.
Hola, tienes una guía o video que expliques como utilizar el IDE Intellij? Auto completados, accesos rapidos, como crear plantillas, etc? me fachina la facilidad y rapidez con la que lo haces. Saludos, excelente video!
Hola, no tengo guias de intellij en el canal, buen IDE, en mi opinión, para Java es lo mejor. También para hacer las cosas más rápidas sobre todo para los videos y no tomarme mucho tiempo , en la mayoría de los casos de autocompletados, son gracias a Github Copilot, una IA para desarrollar.
Saludos y gracias por pasar por acá.
@@uncledavescode eso justo estaba por preguntar gracias por la respuesta
Podrias hacer un video para alguien que recien inicia con Spring? Gracias
Hola Mariano, gracias por pasar por el canal.
Debo hacer un video de este tema, sobre todo de Spring Boot, igual si estás comenzando te recomiendo ver este tema. Es sobre inyección de dependencias, concepto que se ve tanto en Spring Boot que parece algo normal.
ruclips.net/video/b2TJpouhURQ/видео.html
Saludos
Me salvaste la patria toda la info que encuentro es para spring 2.7
hay mucho hate hacia spring 3.0 por lo que veo XD
Gracias por pasar por acá, la verdad creo que van a salir temas poco a poco, la mayoría de las cosas que vemos con spring boot 3 ya se podían implementar con la versión anterior, lo que muchos han seguido ocupando métodos que hacía mucho tiempo estaban marcados como deprecados. Saludos.
@@uncledavescode si es horrible hay mucho material ahora que esta deprecado.
Si, he sacada algo de Spring Security, aunque me quedan como 2 o 3 temas por tocar, también hay cosas pendientes con JPA, en fin, muchos temas y poco tiempo, pero van a salir xd. Saludos
Genial video, enhorabuena!! Tengo un problema, a pesar de indicarle las credenciales que quiero usar, me sigue generando una contraseña por defecto y me impide usar las que yo le he indicado. He seguido los mismos pasos que tu pero nada, no hay manera de resolverlo.
Hola, asegúrate de que la clase SecurityUserDetailsService tenga la anotación @Service y WebSecurityConfig la anotación @Configuration, si puedes compartir el código lo puedo revisar si me pasas el link al email. Saludos
me encanta el contenido y la explicacion! pero no te duelen los ojos con el modo claro? asjalskj
Gracias... La verdad prefiero el fondo blanco, no se, debe ser tema de costumbre. saludos
Muy buena explicación. ¿Dictas cursos completos de Spring?
En realidad, no, voy sacando videos sobre temas específicos, he sacado varios de Spring Security, faltan un par más, están relacionados, pero pueden verse de forma independiente.
Lo mismo hice cuando saqué varios videos de Spring Data JPA.
Consume algo de tiempo y a veces quisiera publicar más de lo que puedo.
Gracias por pasar por acá.
Podrías compartir cada vez que haces un tutorial, la base de datos que usas, para poder hacer las prubeas con la misma DB sin problemas
Gracias a tí, saludos
@@uncledavescode hay posibilidades de que cuelgues la base de datos para descargarla. Anoche me quedé en la parte de agregar la base de datos justamente porque no la tengo
La base de datos como tal no la tengo, con Spring Data JPA, con la forma en que configures la aplicación, las tablas se puden ir creando solas, que creo que es el caso. Lo que necesitas tener es cualquier motor de BD instalado en tu PC, crear una BD manual y configurar la conexión a la misma. Si tienes dudas me puedes escribir al email, pero además en el canal hay varios temas relacionados a Spring Data JPA.
@@uncledavescode claro la idea era probar una base de datos con postgresql pero no pasa nada lo haré con mysql
Si lo que tienes es SQL cambia
spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.datasource.url=jdbc:mysql://localhost:3306/base_de_datos
spring.datasource.username=usuario
spring.datasource.password=contraseña
lo bueno de Data JPA es eso, una buena abstracción para cualquier tipo de BD
explica lo que hace pero no el porque ni para que
Gracias por pasar por acá. Hay un par de videos antes hablando de Spring Security, otros de Spring Data JPA. Este video no es el más básico de todos, parte de la idea que se conoce las bases anteriores. Saludos
@@uncledavescode pero no lo haces con los temas de esta clase
No se a que te refieres, este video se trata de como autentificar un usuario que tengas registrado en un BD, a diferencia de los otros que el usuario estaba en duro, se agrega JPA para ese tema. Si tienes dudas sobre el tema escríbeme al correo para ver bien lo que dices. Saludos
bro, muy chido y todo el video, pero explica cada cosa, no asumas que la gente sabe de lo que estas hablando ni esperes que la gente entienda sin explicar, explica como funciona cada cosa y no solo escribas codigo, la verdad no entendi un culo para que sirve cada cosa
me reí un rato xd. Ahora en serio, si, tienes razón, ese video no es para comenzar, en el canal hay una lista de reproducción titulada Spring Boot, va de menso a más ahí. Saludos
@@uncledavescode esta bien, muchas gracias :3
Seguridad es uno de los temas mas avanzados que hay en lo que se refiere a hacer apis con spring boot. Si no entendiste un culo es porque no sabes nada. Debes buscar tutoriales para principiantes y no esto.