Ich habe eine Anwendung, wo ich die setDefaultTargetUrl('...')
in der SuccessfulLoginHandler
haben.Spring - Die beste Methode, um mehrere URLs zu setzen - setDefaultTarget
Jetzt muss ich einen Fall implementieren, in dem der Benutzer sich einloggen und eine andere Ansicht sehen kann. So weit was ich getan habe ist:
@Service
public class SuccessfulLoginHandler extends SimpleUrlAuthenticationSuccessHandler{
UserService userService;
@Autowired
public SuccessfulLoginHandler(UserService userService){
this.userService = userService;
setDefaultTargetUrl("/app");
}
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException, ServletException {
User user = AccessService.getUser(authentication);
if(this.userService.isFirstLogin(user)){
setDefaultTargetUrl("/firstlogin");
}else{
setDefaultTargetUrl("/app");
}
super.onAuthenticationSuccess(request, response, authentication);
}
}
Ich bin mir nicht sicher, ob dies der beste Weg ist. Es funktioniert ordnungsgemäß, könnte aber ein Problem sein, wenn sich 2 Benutzer gleichzeitig anmelden.
Was wäre der richtige Weg, um die "Weiterleitung" zu implementieren.
Lösung sieht gut aus für mich. auch - es sollte kein Problem geben, wenn sich 2 Benutzer gleichzeitig anmelden (die einzige geteilte Ressource ist der Benutzerservice und sollte threadsafe sein) – fateddy
Ich denke du hast Recht, aber ich habe die Logik auf meinen Controller verschoben, nur um sicher zu sein und dort Ich mache die Weiterleitung. – gon250