Problème d'authentification avec Spring Security dû au GrantedAuthority
Bonjour,
j'utilise spring security et j'ai un problème d'authentification avec les GrantedAuthority
Voici ma classe USER
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
@Entity
@Table(name="MEMBRE")
public class Membre implements UserDetails, Serializable {
...................
private ArrayList<Role> authorities;
@ManyToMany
@JoinTable(
name="MEMBRE_ROLE",
joinColumns={@JoinColumn(name="id_membre", referencedColumnName="id_membre")},
inverseJoinColumns={@JoinColumn(name="id_role", referencedColumnName="id_role")})
public Collection<Role> getAuthorities() {
return this.authorities;
}
public void setAuthorities(ArrayList<Role> authorities) {
this.authorities = authorities;
}
................
} |
Voici ma class Role
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
@Entity
@Table(name="ROLE")
public class Role implements GrantedAuthority, Serializable {
/**
*
*/
private static final long serialVersionUID = 4160725609927520747L;
private Integer id;
private String role;
@Transient
public String getAuthority() {
return this.role;
}
@Id
@GeneratedValue
@Column(name = "id_role", unique = true, nullable = false, precision = 9, scale = 0)
public Integer getId() {
return this.id;
}
@Column(name = "role", nullable = false, length = 20)
public String getRole() {
return this.role;
}
public void setId(Integer id) {
this.id = id;
}
public void setRole(String role) {
this.role = role;
}
} |
voici ma table MEMBRE_ROLE
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
CREATE TABLE IF NOT EXISTS `MEMBRE_ROLE` (
`id_role` INT NOT NULL AUTO_INCREMENT ,
`id_membre` INT NOT NULL),
PRIMARY KEY (`id_role`, `id_membre`) ,
CONSTRAINT `fk_membre_role_membre`
FOREIGN KEY (`id_membre` )
REFERENCES `membre` (`id_membre` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_membre_role_role`
FOREIGN KEY (`id_role` )
REFERENCES `role` (`id_role` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8; |
Et quand je tente de m'authentifier, je récupère l'erreur suivante:
org.springframework.security.authentication.InternalAuthenticationServiceException: IllegalArgumentException occurred while calling setter for property [domain.Membre.authorities (expected type = java.util.ArrayList)]; target = [domain.Membre@1807f3f2], property value = [[domain.Role@16cc0706, domain.Role@88b48]] setter of domain.Membre.authorities; nested exception is IllegalArgumentException occurred while calling setter for property [domain.Membre.authorities (expected type = java.util.ArrayList)]; target = [domain.Membre@1807f3f2], property value = [[domain.Role@16cc0706, domain.Role@88b48]]
je comprend que le setter n'est pas bien défini, mais je n'ai pas trouvé une solution et je ne sais pas si je ma façon d'utiliser mes GrantedAuthority est correcte ou pas. Merci d'avance pour vos suggestions