0
我有一個應用程序,我在SuccessfulLoginHandler
中有setDefaultTargetUrl('...')
。春季 - 設置多個網址的最佳方式 - setDefaultTarget
現在我必須實現一個用戶可以登錄查看不同視圖的情況。到目前爲止我所做的是:
@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個用戶同時登錄(唯一的共享資源是用戶服務,應該是線程安全的),應該不會有問題。 – fateddy
我認爲你是對的,但我已經將邏輯移到了控制器上,以確保它在那裏我做重定向。 – gon250