私はSuccessfulLoginHandler
にsetDefaultTargetUrl('...')
があるアプリケーションを持っています。春 - 複数のURLを設定する最良の方法 - setDefaultTarget
今、ユーザーが別のビューを参照してログインできる1つのケースを実装する必要があります。これまでの私のやり方は:
@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);
}
}
私はこれが最善の方法であるかどうかは分かりません。正常に動作していますが、2人のユーザーが同時にログインする場合には問題になる可能性があります。
「リダイレクト」を実装する正しい方法は何でしょうか。
解決方法は私によく見えます。また、2人のユーザーが同時にログインすると問題はありません。(唯一の共有リソースはuserserviceであり、スレッドセーフである必要があります) – fateddy
あなたは正しいと思いますが、確かに私のコントローラにロジックを移しました。私はリダイレクトを行います。 – gon250