Grails Spring Security: el inicio de sesión con una URL de destino omite el flujo de trabajo posterior a la autenticación

En mi aplicación Grails, he personalizado el flujo de trabajo posterior a la autorización al escribir un controlador de éxito de autenticación personalizado (en resources.groovy) como se muestra a continuación.

authenticationSuccessHandler (MyAuthSuccessHandler) {
    def conf = SpringSecurityUtils.securityConfig
    requestCache = ref('requestCache')
    defaultTargetUrl = conf.successHandler.defaultTargetUrl
    alwaysUseDefaultTargetUrl = conf.successHandler.alwaysUseDefault
    targetUrlParameter = conf.successHandler.targetUrlParameter
    useReferer = conf.successHandler.useReferer
    redirectStrategy = ref('redirectStrategy')
    superAdminUrl = "/admin/processSuperAdminLogin"
    adminUrl = "/admin/processAdminLogin"
    userUrl = "/admin/processUserLogin"
}

Como puede de las últimas tres líneas en el cierre anterior, dependiendo de la función otorgada al inicio de sesión del usuario, la estoy redirigiendo a acciones separadas dentro de laAdminController donde se crea un UserSessionBean personalizado y se almacena en la sesión.

Funciona bien para un caso de inicio de sesión regular que en mi aplicación es así:

El usuario llega a la aplicación a través dehttp://localhost:8080/my-app/ Ohttp://localhost:8080/my-app/login/authElla ingresa su nombre de usuario y contraseña válidos y continúa.La aplicación accede internamente a MyAuthSuccessHandler que redirige a AdminController considerando el rol otorgado a este usuario.El UserSessionBean se crea y almacena en la sesiónEl usuario es llevado a la página de inicio de la aplicación.

También he escrito una costumbre.MyUserDetailsService extendiendoGormUserDetailsService que se accede correctamente en el flujo anterior.

Problema del escenario
Considere un usuario que accede directamente a un recurso protegido (en este caso, el controlador está protegido con@Secured anotación) dentro de la aplicación.

Clics del usuariohttp://localhost:8080/my-app/inbox/indexLa aplicación la redirige ahttp://localhost:8080/my-app/login/authEl usuario ingresa su nombre de usuario y contraseña válidosEl usuario es llevado ahttp://localhost:8080/my-app/inbox/index

losMyAuthSuccessHandler se omite por completo en este proceso y por lo tanto miUserSessionBean no se crea, lo que lleva a errores en el uso posterior en lugares dondeUserSessionBean se accede.

PREGUNTAS:

En el escenario problemático, ¿la aplicación omite elMyAuthSuccessHandler ¿Porque hay una URL de destino para que se redirija al iniciar sesión?¿Podemos obligar al proceso a pasar siempre?MyAuthSuccessHandler incluso con la URL de destino presente?Si la respuesta a 2 es no, ¿hay una alternativa en cuanto a cómo y dóndeUserSessionBean todavía se puede crear?

Respuestas a la pregunta(2)

Su respuesta a la pregunta