En este tutorial aprenderemos a instalar y configurar el plugin de Spring Security para Grails y poder usarlo de manera adecuada en nuestros proyectos, agradeciendo la colaboración de Miguel Coba por las dudas resueltas :D
Instalando el plugin de Spring Security
Para realizar la instalación del plugin (asumimos que ya tenemos un proyecto grails) simplemente necesitamos ejecutar el siguiente comando desde nuestro IDE favorito o bien desde la línea de comandos con Grails.
Configurando el plugin de Spring Security
Usuario:
class Usuario { transient springSecurityService String username String password boolean enabled boolean accountExpired boolean accountLocked boolean passwordExpired String nombre String apellidoPaterno String apellidoMaterno String email Date fechaAlta static constraints = { username(blank: false, unique: true) password(blank: false) nombre(blank: false, size: 2..100) apellidoPaterno(blank: false, size: 2..50) apellidoMaterno(blank: false, size: 2..50) email(email: true, blank: false) fechaAlta() } static mapping = { password column: '`password`' } SetgetAuthorities() { UsuarioRol.findAllByUsuario(this).collect { it.rol } as Set } def beforeInsert() { encodePassword() } def beforeUpdate() { if (isDirty('password')) { encodePassword() } } protected void encodePassword() { password = springSecurityService?.encodePassword(password) } }
Rol:
class Rol { String authority static mapping = { cache true } static constraints = { authority blank: false, unique: true } }
UsuarioRol:
import org.apache.commons.lang.builder.HashCodeBuilder class UsuarioRol implements Serializable { Usuario usuario Rol rol boolean equals(other) { if (!(other instanceof UsuarioRol)) { return false } other.usuario?.id == usuario?.id && other.rol?.id == rol?.id } int hashCode() { def builder = new HashCodeBuilder() if (usuario) builder.append(usuario.id) if (rol) builder.append(rol.id) builder.toHashCode() } static UsuarioRol get(long usuarioId, long rolId) { find 'from UsuarioRol where usuario.id=:usuarioId and rol.id=:rolId', [usuarioId: usuarioId, rolId: rolId] } static UsuarioRol create(Usuario usuario, Rol rol, boolean flush = false) { new UsuarioRol(usuario: usuario, rol: rol).save(flush: flush, insert: true) } static boolean remove(Usuario usuario, Rol rol, boolean flush = false) { UsuarioRol instance = UsuarioRol.findByUsuarioAndRol(usuario, rol) if (!instance) { return false } instance.delete(flush: flush) true } static void removeAll(Usuario usuario) { if(usuario.id) executeUpdate 'DELETE FROM UsuarioRol WHERE usuario=:usuario', [usuario: usuario] } static void removeAll(Rol rol) { executeUpdate 'DELETE FROM UsuarioRol WHERE rol=:rol', [rol: rol] } static mapping = { id composite: ['rol', 'usuario'] version false } }
RequestMap:
class Requestmap { String url String configAttribute static mapping = { cache true } static constraints = { url blank: false, unique: true configAttribute blank: false } }Lo siguiente que tenemos que hacer es realizar algunas configuraciones en Config.groovy primero que nada indicándole el algoritmo que utilizara spring security para la encriptación de los passwords para ello basta con indicar la siguiente línea donde le indicamos que use MD5:
grails.plugins.springsecurity.password.algorithm='MD5'
Este comentario ha sido eliminado por el autor.
ResponderEliminarQue tal, generalmente ese error sale cuando el contenido a almacenar es más grande que lo que puede almacenar el campo de tu base de datos.
Eliminar