with tutorial j_spring_security_check example ejemplo spring-mvc spring-security

spring-mvc - tutorial - spring security rest api



cómo ser redirigido a un método en el inicio/cierre de sesión antes de que target-url se llame en spring-security, spring mvc (2)

Estoy tratando de registrar la hora actual de inicio de sesión (en un método u objeto) una vez que el inicio de sesión es exitoso y asigno la hora de inicio de sesión pasado al tiempo de inicio de sesión actual al cerrar la sesión. Estoy usando Spring Spring para iniciar sesión, cerrar sesión. Pero no sé cómo tomar el control de un método antes de que vaya a la URL de destino.

PRIMAVERA-SEGURIDAD.XML -

<security:form-login login-page="/login" login-processing-url="/home/currentTime" authentication-failure-url="/login?error=true" default-target-url="/home"/> <security:logout invalidate-session="true" logout-success-url="/home/copyLastloginToCurrentLoginTime" logout-url="/logout" />

CONTROLADOR - / inicio -

@RequestMapping(value = "/currentTime", method = RequestMethod.GET) public void recordCurrentLoginTime(Model model) { //code to record current time } @RequestMapping(value = "/copyLastloginToCurrentLoginTime", method = RequestMethod.GET) public void changeLastLoginTime(Model model) {//code to copy current to last time }

PROBLEMA - Recibo el error 404 para - project-title / j_spring_security_check URL. y cuando trato de depurar, no entra en absoluto en los métodos del controlador. ¿Debo usar algunos filtros o algo más para este propósito?

He visto SpringSecurity: siempre redirigir a los usuarios registrados a una página y Cómo procesar un inicio de sesión de formulario usando Spring Security / Spring MVC . Pero no pude lograr mi objetivo.

Soy nuevo en la seguridad de primavera y necesito ayuda para avanzar en la dirección correcta.

  • Gracias

Escriba su propio AuthenticationSuccessHandler y LogoutSuccessHandler .

Ejemplo:

spring-security.xml :

<security:form-login login-page="/login" login-processing-url="/login_check" authentication-failure-url="/login?error=true" authentication-success-handler-ref="myAuthenticationSuccessHandler" /> <security:logout logout-url="/logout" success-handler-ref="myLogoutSuccessHandler" />

AutenticaciónSuccessHandler

@Component public class MyAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler { @Autowired private UserService userService; @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { // changeLastLoginTime(username) userService.changeLastLoginTime(authentication.getName()); setDefaultTargetUrl("/home"); super.onAuthenticationSuccess(request, response, authentication); } }

Cerrar sesiónSuccessHandler

@Component public class MyLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler { @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { if (authentication != null) { // do something } setDefaultTargetUrl("/login"); super.onLogoutSuccess(request, response, authentication); } }


Puede asignar una URL de destino predeterminada en su asignación como

<security:form-login login-page="/login" login-processing-url="/login_check" authentication-failure-url="/login?error=true" default-target-url = "/welcome" authentication-success-handler-ref="myAuthenticationSuccessHandler"/>

Cuando el usuario se autentica, es el momento en que el usuario accedió a su sistema. Realice una actualización a través de DAO en la tabla de usuarios con fecha y hora actuales. Proceso simple y listo.