[SPRING] 스프링 보안 - 이미 로그인 한 경우 리디렉션
SPRING스프링 보안 - 이미 로그인 한 경우 리디렉션
나는 봄이 처음이다.
인증 된 사용자가 로그인 페이지에 액세스하는 것을 원하지 않습니다. 사용자가 이미 인증 된 경우 '/ login'에 대한 리디렉션을 처리하는 적절한 방법은 무엇입니까? 이미 로그인 한 경우 '/ index'로 리디렉션하고 싶습니다.
로그인시 isAnonomous ()를 시도했지만 거부 된 페이지로 리디렉션됩니다.
<security:http auto-config="true" use-expressions="true" ...>
<form-login login-processing-url="/resources/j_spring_security_check"
default-target-url="/index"
login-page="/login" authentication-failure-url="/login?login_error=t" />
<logout logout-url="/resources/j_spring_security_logout" />
...
<security:intercept-url pattern="/login" access="permitAll" />
<security:intercept-url pattern="/**" access="isAuthenticated()" />
</security:http>
해결법
-
==============================
1.로그인 페이지의 컨트롤러 기능 :
로그인 페이지의 컨트롤러 기능 :
관련 코드 :
Authentication auth = SecurityContextHolder.getContext().getAuthentication(); if (!(auth instanceof AnonymousAuthenticationToken)) { /* The user is logged in :) */ return new ModelAndView("forward:/index"); }
-
==============================
2.로그인 페이지에서 성공적으로 리디렉션하려면 사용자가 이미 로그인 한 경우 login.jsp에 다음을 추가하십시오.
로그인 페이지에서 성공적으로 리디렉션하려면 사용자가 이미 로그인 한 경우 login.jsp에 다음을 추가하십시오.
보안 태그 라이브러리 헤더를 JSP 상단에 추가하십시오.
<%@taglib uri="http://www.springframework.org/security/tags" prefix="sec"%>
그런 다음 "head"태그 안에 다음 태그를 추가하십시오 (가급적이면 상단 부근).
<sec:authorize access="isAuthenticated()"> <% response.sendRedirect("main"); %> </sec:authorize>
로그인 페이지에 액세스하는 사용자가 이미 로그인 한 경우 main.html (또는 주 .jsp가 매핑되는 항목)으로 리디렉션됩니다.
유효한 로그인 페이지 연습은 스프링 보안의 "form-login"빈이 모든 리다이 팅 작업을하도록하는 것이므로 컨트롤러를 통해이 작업을 수행하지 못했기 때문에 수정할 수있는 로그인 컨트롤러가 없었습니다.
-
==============================
3.이봐, 할 수있어.
이봐, 할 수있어.
<h:head> <sec:authorize access="isAuthenticated()"> <meta http-equiv="refresh" content="0;url=http://your index.xhtml url (full url)" /> </sec:authorize> </h:head>
이 방법은 매우 간단하고 편리합니다. 그렇지 않습니까?
-
==============================
4.login.xhtml
login.xhtml
<h:head > <f:metadata> <f:event type="preRenderView" listener="#{loginBean.onPageLoad}"/> </f:metadata> </h:head>
loginBean
public void onPageLoad(){ Authentication auth = SecurityContextHolder.getContext().getAuthentication(); if (!(auth instanceof AnonymousAuthenticationToken)) { try { FacesContext.getCurrentInstance().getExternalContext().redirect(url); } catch (IOException e) { e.printStackTrace(); } } }
from https://stackoverflow.com/questions/13131122/spring-security-redirect-if-already-logged-in by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 언제 봄 콩 파괴 방법이라고? (0) | 2019.01.01 |
---|---|
[SPRING] 비 싱글 톤 빈에서 캐스팅 된 스프링 프록시에서 BeanNotOfRequiredTypeException 수정? (0) | 2019.01.01 |
[SPRING] 테스트 클래스가 더러워진 후에 Spring JUnit 애플리케이션 컨텍스트를 어떻게 재설정합니까? (0) | 2019.01.01 |
[SPRING] Spring 3.0 : XML 스키마 네임 스페이스 용 Spring NamespaceHandler를 찾을 수 없다. (0) | 2019.01.01 |
[SPRING] 스프링 부트 SSL 클라이언트 (0) | 2019.01.01 |