Ich frage mich, wie kann ich ein Benutzerrollen aktualisieren, habe ich folgende Möglichkeiten ausprobiert:
(Hinweis: User = Personne, Userrole = PersonneRole)
die Liste löschen und ihn durch einen neuen zu ersetzen:Wie ersetzt man die Rollensammlung des Benutzers durch eine andere?
@Transactional
def myaction(Personne personne,List<String> roles){ // roles is a list of authorities
def role
personne.personneRoles*.delete()// tried PersonneRoles.findByPersonne(personne)*.delete() as well
personne.personneRoles.clear()
roles.each { role=Role.findByAuthority(it);personne.personneRoles.add(new PersonneRole(personne,role)) }
if(!personne.save(flush:true))
return false
....
ich this tutorial auch befolgt haben, aber hat nicht funktioniert:
@Transactional
def action(Personne personne,List<String> roles){
def role
def temp = []
temp += personne.personneRoles
temp.each{personneRole ->
personne.removeFromPersonneRoles(personneRole)
personneRole.delete()
}
roles.each { role=Role.findByAuthority(it);personne.personneRoles.add(new PersonneRole(personne,role)) }
if(!personne.save(flush:true))
return false
...
in beiden Fällen bekomme ich einen Fehler mir zu sagen, dass“.... abgelehnt Wert [ROLE_ADMIN_APP]
das ist eine gültige Rolle, aber ist schon nach der Person, das heißt, dass die Sammlung nicht gelöscht ist, keine Lösung bitte? Danke
Möglicherweise müssen Sie eine 'personne.save()' zwischen dem Löschen der Rollen und dem Hinzufügen der neuen durchführen. –
muss ich die Aktion @NonTrasctionnal machen? – hereForLearing
Nein, das tust du nicht. –