以下を使用して、リクエストが ajaxrequest であるかどうかを確認できます。
springSecurityService.isAjax(リクエスト)
リダイレクトの問題にも問題があったため、独自の ajaxSubmit コントローラー アクションを作成することにしました。これは純粋に概念実証のために行ったものであるため、この例は最も適切ではない可能性があります。
def ajaxSubmit = {
if(!springSecurityService.isAjax(request)) {
redirect action: "authfail"
return
}
def token = new UsernamePasswordAuthenticationToken(params.j_username, params.j_password)
try {
UserDetails userDetails = userDetailsService.loadUserByUsername(params.j_username)
token.setDetails( userDetails )
} catch (UsernameNotFoundException unfe) {
request.getSession().setAttribute(WebAttributes.AUTHENTICATION_EXCEPTION, unfe)
redirect action: "authfail"
return
}
try {
def authSession = authenticationManager.authenticate(token)
SCH.getContext().setAuthentication(authSession)
redirect action: "ajaxSuccess"
return
} catch (AuthenticationException ae) {
request.getSession().setAttribute(WebAttributes.AUTHENTICATION_EXCEPTION, ae)
redirect action: "authfail"
return
}
}