2016-09-09 2 views
0

문제가 있습니다. 응용 프로그램에 로그인하여 다른 페이지에 액세스하여 응용 프로그램을 http://localhost:8080/InformationManagement/smartapp/allFileNetStatus에 5 분 이상 방치 한 다음 세션이 만료되고 로그인 페이지로 리디렉션되면 액세스를 시도한다고 가정합니다. 내 로그인 페이지와 홈 페이지 URL은 같은봄 mvc 로그인 후 홈 페이지로 리디렉션

이다 나는 봄 보안이 관리 방법 : 일단 나는 그것이 로그인 취득 자격 증명 대신 홈 페이지 (http://localhost:8080/InformationManagement/)

참고 http://localhost:8080/InformationManagement/smartapp/allFileNetStatus에 저를 얻을 입력합니다.

코드 :

<http pattern="/resources" security="none" /> 

<http auto-config="true" use-expressions="true"> 
    <intercept-url pattern="/login" access="permitAll" /> 
    <intercept-url pattern="/logout" access="permitAll" /> 
    <intercept-url pattern="/denied" access="hasRole('ROLE_USER')" /> 
    <intercept-url pattern="/" access="permitAll" /> 
    <intercept-url pattern="/user" access="hasRole('ROLE_USER')" /> 
    <intercept-url pattern="/user/create" access="hasRole('ROLE_ADMIN')" /> 
    <intercept-url pattern="/user/update" 
     access="hasAnyRole('ROLE_READ','ROLE_ADMIN')" /> 
<intercept-url pattern="/smartapp/getNewFileNetStatus" access="hasRole('ROLE_SMARTAPP')" /> 
<intercept-url pattern="/smartapp/allFileNetStatus" access="hasRole('ROLE_SMARTAPP')" /> 
    <intercept-url pattern="/user/alluser" access="hasAnyRole('ROLE_READ','ROLE_ADMIN')" /> 
    <intercept-url pattern="/admin" access="hasRole('ROLE_ADMIN')" /> 

    <form-login login-page="/login" authentication-failure-url="/login/failure" 
     default-target-url="/" /> 

    <access-denied-handler error-page="/denied" /> 

    <logout invalidate-session="true" logout-success-url="/logout/success" 
     logout-url="/logout" /> 
</http> 



<beans:bean id="daoAuthenticationProvider" 
    class="org.springframework.security.authentication.dao.DaoAuthenticationProvider"> 
    <beans:property name="userDetailsService" ref="userDetailsService"></beans:property> 

</beans:bean> 

<beans:bean id="authenticationManager" 
    class="org.springframework.security.authentication.ProviderManager"> 
    <beans:property name="providers"> 
     <beans:list> 
      <beans:ref local="daoAuthenticationProvider" /> 
     </beans:list> 
    </beans:property> 
</beans:bean> 

<authentication-manager> 
    <authentication-provider user-service-ref="userDetailsService"> 
     <password-encoder hash="md5"></password-encoder> 
    </authentication-provider> 
</authentication-manager> 

HomeController.java

@Controller 
@RequestMapping("/") 
public class HomeController { 

/* 
* @Value("${msg}") private String msg; 
*/ 

    @Autowired 
    UserDetailsService userService; 

Logger logger = Logger.getLogger(HomeController.class); 

@RequestMapping(value = "/help", method = RequestMethod.GET) 
public String getAdminPage() { 
    return "help"; 
} 

@RequestMapping(method = RequestMethod.GET) 
public String getHomePage(Model model, HttpSession session) { 

    Authentication auth = SecurityContextHolder.getContext() 
      .getAuthentication(); 

    if (!(auth instanceof AnonymousAuthenticationToken)) { 

     /* The user is logged in :) */ 
     if (logger.isInfoEnabled()) { 
      logger.info("User got logged in..."); 
     } 
     int passwordResetValue = userService.userPasswordReset(auth 
       .getName()); 
     session.setAttribute("username",auth.getName()); 
     System.out.println("username-- set-->"+session.getAttribute("username")); 
     System.out.println("passwordResetValue" + passwordResetValue); 
     if (passwordResetValue == 0) { 
      return "home"; 
     } else { 
      return "redirect:/password/changePassword?value=reset"; 
     } 

    } else { 
     if (logger.isInfoEnabled()) { 
      logger.info("Redirected to Login Page"); 
     } 
     return "access/login"; 
    } 
} 

AccessController.java

@Controller 
@RequestMapping 
public class AccessController { 

@RequestMapping(value = "/denied") 
public String denied() { 
    return "access/denied"; 
} 

@RequestMapping("/login") 
public String login() { 
    /*System.out.println("message-->" + message); 
    model.addAttribute("message", message);*/ 
    Authentication auth = SecurityContextHolder.getContext() 
      .getAuthentication(); 

    if (!(auth instanceof AnonymousAuthenticationToken)) { 
     auth.getPrincipal(); 
     /* The user is logged in :) */ 
     System.out.println("eeee"); 
     return "redirect:/"; 
    } else { 
     System.out.println("Finalalaay" + auth.getDetails()); 
     return "access/login"; 
    } 
} 

@RequestMapping(value = "/login/failure") 
public String loginFailure(final RedirectAttributes redirect) { 
    String message = "Please verify username and password"; 
    Authentication auth = SecurityContextHolder.getContext() 
      .getAuthentication(); 

    if (!(auth instanceof AnonymousAuthenticationToken)) { 

     /* The user is logged in :) */ 
     return "redirect:/"; 
    } else { 
     redirect.addFlashAttribute("message", message); 
     return "redirect:/login"; 
    } 
} 

@RequestMapping(value = "/logout/success") 
public String logoutSuccess(final RedirectAttributes redirect) { 
    String message = "You have been successfully logged out."; 
    redirect.addFlashAttribute("message", message); 
    return "redirect:/login"; 
} 

}

답변

1

당신은 자신의 AuthenticationSuccessHandler을 구현해야합니다.

<!-- Add to your form login the handler--> 
<form-login login-page="/login" authentication-failure-url="/login/failure" 
     default-target-url="/" authentication-success-handler-ref="homeRedirectSuccessHandler" /> 
<beans:bean id="homeRedirectSuccessHandler" 
    class="your.package.HomeRedirectSuccessHandler" /> 

그리고 당신의 HomeRedirectSuccessHandler에

: 도움을

protected void handle(HttpServletRequest request, 
    HttpServletResponse response, Authentication authentication) throws IOException { 

    redirectStrategy.sendRedirect(request, response, "yourHomepage.html); 
} 
+0

감사합니다 – bharathi

관련 문제