Gracias por la dedicación y esfuerzo que haces para traernos tan maravillo contenido, me haz enseñado mucho, tus videos son de gran calidad, estoy seguro que han ayudado a muchas personas a mejorar sus habilidades y conocimientos, se te agradece mucho
Nunca suelo comentar pero necesito decirte que tu canal vale oro, acabo de empezar con Spring Security y todo lo que sé es gracias a ti. Muchas gracias por compartir contenido de tanta calidad de forma gratuita n.n
Buenas de nuevo, Estoy viendo un directo del canal "Programando en JAVA" y te acaban de nombrar, han mirado tu canal y se ha subscrito y recomendado. Está mostrando en directo el SpringOne donde se mostrarán las mejoras de Spring Boot (hoy y mañana) y sobre todo de spring Security 6.4 Un saludo.
Genial, gracias por tu contenido. Me gustaria saber si podrías hacer una ruta para ver en orden tus videos del canal que realmente son muy interesantes.
Muchas gracias por el video Santi, lo voy a estar aplicando en un futuro próximo para una aplicación que estamos desarrollando. Excelente presentación de los cambios, bien segmentado el video para que los conceptos sean claros de principio a fin. Dos anotaciones: 1. Cuando haces la anotación sobre el service en authorizing arbitrary objects, lo que se asegura son los métodos del servicio, no propiamente la clase Person o List, es decir que si se accede al repository desde otro servicio, no aplicaría la validación?. 2. Una bobada, el log.info("message: {}", methodException.toString()); ya formatea el mensaje, no hay necesidad de usar String.format
Hola, gracias por comentar. Con respecto a la duda #1 se asegura el objeto como tal y no el método, en la documentación del nuevo release recalca que al usar la anotación de arbitrary objects se asegura el objeto específico, en este caso el List, puedes verlo en la documentación oficial si gustas. Con respecto a la apreciación #2, gracias por decirlo. Conozco esa forma, pero no se me pasó por la mente hacerlo así. Jejeje! Hubiese quedado mejor. ¡Saludos!
Tengo algunas dudas: 1.) En el uso de las MetaAnnotations no hay que concatenate ROLE_ antes de los lroles? 2.) Como se usuaria las meta anotations y los demás temas con JET?
Hola, cuando usas las meta annotations no debes poner ROLE_ porque spring security lo hace por debajo por ti. No entiendo a que te refieres con "JET". ¡Saludos!
Hola Santi, veo un problema con los error handling y es que al poner la anotacion se cambia el codigo de respuesta a un 200 cuando por convencion deberia ser un 4XX. Esto me imagino que se te paso explicarlo porque me extraña que desde Spring no hayan pensado en esto. Podrias confirmar si se puede cambiar el 200 por el 4XX?
Hola Antonio, muchas gracias por tu comentario. Con respecto a tu apreciación no veo tan grave ese asunto, cuando nosotros capturamos errores y devolvemos una respuesta estamos haciendo un tratamiento correcto del posible error entonces como todo salió bien la aplicación devuelve un 200, que quiere decir "todo OK", estamos denegando el acceso, pero si te pones a pensar todo el proceso salió bien, lo que puedes hacer es devolver el status code dentro del cuerpo de la respuesta. Ahora sí te molesta ese 200 en la respuesta, el error handling no te servirá debido a que no podemos cambiar el código de respuesta, pero para solucionar ello puedes configurar un AuthenticationEntryPoint que es la forma antigua de capturar errores en spring security, allí si que puedes personalizar el código http de respuesta. ¡Saludos!
Hola Comunidad. Por favor alguien me podría orientar sobre como podría resolver el siguiente caso de uso: Tengo un endpoint que devuelve el numero de la tarjeta de credito. Como haría para que si el usuario logado tiene el permiso "View" vea el número completo 1234 1234 1234, en caso contrario vea: "***1234". Gracias
Hola, eso es fácil de hacer puedes hacerlo en el front end o en el backEnd, simplemente debes tener buen manejo de cadenas String en java. Lo que yo haría es calcular el índice de los últimos 4 dígitos de la cadena y con una función "replace" convertimos todos los caracteres que estén antes de esos índices a "*" y listo. ¡Saludos!
@@unprogramadornace gracias por tu respuesta. Lo querría hacer en el backend porque al ser un dato sensible si no es estrictamente necesario no mandar el dato plano. El caso es que necesitaria inyectar en el servicio el SecurityContext para sacar el principal y ver si tiene tal rol o tal permiso y hacerle el replace o no. Hay alguna forma mas directa??
@@damano84 Lo que yo haría es crear un método que me devuelva el usuario logeado y con eso podría obtener el usuario en cualquier parte de mi aplicación. ¡Saludos!
Buena Santi, siempre con las novedades, tus videos ayudan a muchos por aquí
El messi de la programación, se agradece.
tome su like mi estimado y muchas gracias. Saludos desde norte de santander ✌
Gracias por ese like.
¡Saludos!
Buenisimo , me estoy capacitando con tus cursos!!!
Yo estoy totalmente agradecido con el universo y contigo por transmitir tan valiosos conocimientos de verdad muchas gracias.
Gracias a ti por tomarte el tiempo de escribir ese bello comentario.
¡Saludos!
Gracias queridooo, me nace comentar y pulgarcito arriba. Abrazo
Gracias a ti por comentar.
¡Saludos!
Santi, de nuevo muchas gracias, como siempre aprendiendo mucho.
Excelente video, se agradece mucho, en mi caso siempre tuve problemas con el tema de la seguridad y mas si utilizo JWT.
Muchísimas gracias por el contenido... Saludos
Gracias por la dedicación y esfuerzo que haces para traernos tan maravillo contenido, me haz enseñado mucho, tus videos son de gran calidad, estoy seguro que han ayudado a muchas personas a mejorar sus habilidades y conocimientos, se te agradece mucho
Nunca suelo comentar pero necesito decirte que tu canal vale oro, acabo de empezar con Spring Security y todo lo que sé es gracias a ti. Muchas gracias por compartir contenido de tanta calidad de forma gratuita n.n
Muchas gracias por tu comentario.
Me alegra saber que mi contenido te ha ayudado a avanzar.
¡Saludos!
Como siempre aportando información muy oportuna y valiosa. Muchas gracias por darte del tiempo de compartir...
Gracias a ti por tomarte el tiempo de comentar.
¡Saludos!
Buenas de nuevo,
Estoy viendo un directo del canal "Programando en JAVA" y te acaban de nombrar, han mirado tu canal y se ha subscrito y recomendado.
Está mostrando en directo el SpringOne donde se mostrarán las mejoras de Spring Boot (hoy y mañana) y sobre todo de spring Security 6.4
Un saludo.
Hola, gracias por avisarme. Le daré un vistazo al streaming.
¡Saludos!
Muchas gracias por la claridad con la que expliques
Muchas gracias por tus actualizaciones!!!
Uno de los mejores canales de java con información actual
Calidad de video, siempre me despierto para ver qué nos traes de nuevo, y me encuentro con esta gran sorpresa, Gracias Santiago.
Gracias por tu comentario. Me alegra que mis vídeos te gusten.
¡Saludos!
excelente video! muchas gracias.
Excelente, muchas gracias por todos tus aportes, espero con ansias algun dia, ojala puedas, un video sobre webflux desde ya gracias
Lo tendré en cuenta.
¡Saludos!
Gracias jefe 🙏
Un crack de cracks, mil gracias.
Excelente video!! 👏🏻👏🏻👏🏻
excelente explicación, gracias 👍
Muchas gracias bro!!
gracias master, excelente contenido
Perfecto, explicas muy bien y claro, nunca pares!
Edit: Me encantaria un video sobre jackson para trabajar con json!
Gracias por el comentario. Lo tendré en cuenta.
¡Saludos!
Muchas gracias por el video mi hermano. Apoyo la petición de un video o una serie de videos para Programación Reactiva WebFlux.
Genial, gracias por tu contenido. Me gustaria saber si podrías hacer una ruta para ver en orden tus videos del canal que realmente son muy interesantes.
Lo tendré en cuenta.
¡Saludos!
Grande, podrías hacer un video de como se trabajan los refresh token por favor :)
Muchas gracias por el video Santi, lo voy a estar aplicando en un futuro próximo para una aplicación que estamos desarrollando. Excelente presentación de los cambios, bien segmentado el video para que los conceptos sean claros de principio a fin.
Dos anotaciones:
1. Cuando haces la anotación sobre el service en authorizing arbitrary objects, lo que se asegura son los métodos del servicio, no propiamente la clase Person o List, es decir que si se accede al repository desde otro servicio, no aplicaría la validación?.
2. Una bobada, el log.info("message: {}", methodException.toString()); ya formatea el mensaje, no hay necesidad de usar String.format
Hola, gracias por comentar. Con respecto a la duda #1 se asegura el objeto como tal y no el método, en la documentación del nuevo release recalca que al usar la anotación de arbitrary objects se asegura el objeto específico, en este caso el List, puedes verlo en la documentación oficial si gustas.
Con respecto a la apreciación #2, gracias por decirlo. Conozco esa forma, pero no se me pasó por la mente hacerlo así. Jejeje! Hubiese quedado mejor.
¡Saludos!
Santiago, algún día podremos ver logs? excelente video
Claro que sí. Lo tendré en cuenta.
¡Saludos!
Buen aporte
Tengo algunas dudas:
1.) En el uso de las MetaAnnotations no hay que concatenate ROLE_ antes de los lroles?
2.) Como se usuaria las meta anotations y los demás temas con JET?
Hola, cuando usas las meta annotations no debes poner ROLE_ porque spring security lo hace por debajo por ti. No entiendo a que te refieres con "JET".
¡Saludos!
@@unprogramadornace jajaja perdón, no es JET, me refería a JWT, lo que pasa es que teclado lo autocorrigio
Hola Santi, veo un problema con los error handling y es que al poner la anotacion se cambia el codigo de respuesta a un 200 cuando por convencion deberia ser un 4XX. Esto me imagino que se te paso explicarlo porque me extraña que desde Spring no hayan pensado en esto. Podrias confirmar si se puede cambiar el 200 por el 4XX?
Hola Antonio, muchas gracias por tu comentario. Con respecto a tu apreciación no veo tan grave ese asunto, cuando nosotros capturamos errores y devolvemos una respuesta estamos haciendo un tratamiento correcto del posible error entonces como todo salió bien la aplicación devuelve un 200, que quiere decir "todo OK", estamos denegando el acceso, pero si te pones a pensar todo el proceso salió bien, lo que puedes hacer es devolver el status code dentro del cuerpo de la respuesta. Ahora sí te molesta ese 200 en la respuesta, el error handling no te servirá debido a que no podemos cambiar el código de respuesta, pero para solucionar ello puedes configurar un AuthenticationEntryPoint que es la forma antigua de capturar errores en spring security, allí si que puedes personalizar el código http de respuesta.
¡Saludos!
Para cuándo Docker y Kubernetes con Spring Boot 😏?
Lo pensaré. Jeje!
¡Saludos!
Hola Comunidad.
Por favor alguien me podría orientar sobre como podría resolver el siguiente caso de uso:
Tengo un endpoint que devuelve el numero de la tarjeta de credito.
Como haría para que si el usuario logado tiene el permiso "View" vea el número completo 1234 1234 1234, en caso contrario vea: "***1234".
Gracias
Hola, eso es fácil de hacer puedes hacerlo en el front end o en el backEnd, simplemente debes tener buen manejo de cadenas String en java. Lo que yo haría es calcular el índice de los últimos 4 dígitos de la cadena y con una función "replace" convertimos todos los caracteres que estén antes de esos índices a "*" y listo.
¡Saludos!
@@unprogramadornace gracias por tu respuesta.
Lo querría hacer en el backend porque al ser un dato sensible si no es estrictamente necesario no mandar el dato plano.
El caso es que necesitaria inyectar en el servicio el SecurityContext para sacar el principal y ver si tiene tal rol o tal permiso y hacerle el replace o no.
Hay alguna forma mas directa??
@@damano84 Lo que yo haría es crear un método que me devuelva el usuario logeado y con eso podría obtener el usuario en cualquier parte de mi aplicación.
¡Saludos!