Ich bin neu in Java Spring. Ich erstelle ein Projekt, das Spring Boot verwendet, und ich muss Benutzer-ID des aktuellen Benutzers abrufen. Soweit ich weiß, können wir mithilfe von Sicherheitskontext Haltern aktuelle angemeldete Benutzer bekommen und hier ist mein Code:wie bekomme ich userID von db mit Feder Sicherheit
@RequestMapping(value="/posts/create", method=RequestMethod.GET)
public String addPost(String username, Model model){
Authentication auth= SecurityContextHolder.getContext().getAuthentication();
String name=auth.getName();
UserDetails userDetial= (UserDetails) auth.getDetails();
Users user= uRepo.findByUsername(userDetial.getUsername());
Long id= user.getId();
model.addAttribute("add", new Post());
model.addAttribute("userId", id);
model.addAttribute("authorName", name);
return "posts/create";
}
Ich weiß nicht, was mit meinem Code falsch ist, wie ich eine Fehlermeldung anzeigt: „org .springframework.security.web.authentication.WebAuthenticationDetails können nicht in org.springframework.security.core.userdetails.UserDetails umgewandelt werden ".
Gibt es jemanden, der es mir erklären kann?
Vielen Dank. Es klappt. Jetzt habe ich ein anderes Problem in meinem Projekt. Ich wäre Ihnen dankbar, wenn Sie mir antworten könnten. Ich habe 2 Tabellen Benutzer und Post welcher Autor wäre Benutzername in Benutzer Tabelle. Ich weiß nicht, wenn ich den obigen Weg benutze, um Benutzer-ID zu erhalten, der Benutzer ist jetzt in der Lage, nur 1 Post zu erstellen, dann der Fehler: "java.lang.StackOverflowError: null" auftreten. Dann entferne ich diesen Weg, ich meine ich gebe die Benutzerkennung manuell ein, das System funktioniert einwandfrei. Ich brauche die userId, um 2 Tabellen nebenbei zu verbinden – Alice
Erstellen Sie einen anderen Beitrag für diesen und fügen Sie den Link hier als einen Kommentar hinzu, so werde ich antworten – akuma8