Ich entwickle eine Webanwendung, die Spring Security für die Authentifizierung von Benutzern verwendet. Ich weiß, dass ich die angemeldeten Benutzer auf diese Weise erhalten kann:Welcher ist der beste Weg, um den angemeldeten Benutzer mit Federsicherheit zu erhalten?
public class SecurityUtil {
public static User getCurrentUser() {
SecurityContextHolder.getContext().getAuthentication().getPrincipal()
}
}
auf diese Weise und funktioniert gut. Die Frage ist: Welches ist der beste Weg, um auf diesen Wert zuzugreifen? Ich werde einige Beispiele machen:
1.User als Variable in der Steuerung erklärt:
public class FooController {
@Autowired
private FooService fooService;
private User u = SecurityUtil.getCurrentUser();
@RequestMapping(...)
public void control() {
fooService.doSomething(u);
}
}
2.User als Parameter an den Dienst übergeben:
public class FooController {
@Autowired
private FooService fooService;
public void control() {
fooService.doSomething(SecurityUtil.getCurrentUser());
}
}
3.User in die zugegriffen Service:
public class FooService {
public void doSomething() {
SecurityUtil.getCurrentUser();
//Do something
}
}
Sind alle diese Beispiele gültig? Kann ich irgendjemanden von ihnen undeutlich benutzen? Es gibt einige Nachteile, von denen ich wissen sollte?
Welche Version von Spring verwenden Sie? –