Spring 의 redirect Strategy 를 이용 하여 url hash tag 의 방향 을 바 꾸 는 방법

2738 단어 redirect
url 의 hash 부분 은 서버 에 전송 할 수 없다 는 것 을 잘 알 고 있 습 니 다.예 를 들 어http://projectname/#M_FACTORY:ci,그 중 url 에 있 는"\#MFACTORY:ci"는 hash 부분 으로 프론트 데스크 에서 location.hash 로 얻 을 수 있 으 며 백 스테이지 로 전 달 될 때 이 부분 은 무시 되 었 습 니 다.만약 우리 가 로그 인 을 한 후에 자동 으로 이 url 로 넘 어가 고 싶다 면 일반적인 방향 을 바 꾸 는 것 은 실현 할 수 없다.
1.Spring 로그 인 성공 적 인 리 셋 정책 설정
아 이 디 어 는 always-use-default-target="true"를 사용 할 수 없습니다.그렇지 않 으 면 방향 을 바 꿀 수 없습니다.

<security:http>
<security:form-login login-page="/login.action" default-target-url="/index.html" authentication-success-handler-ref="successHandler"
			authentication-failure-url="/loginfailed.action" />
</security:http>

2.targetUrlParameter 파라미터 와 방향 변경 정책 설정
이 매개 변 수 를 설정 하면 현재 요청 은 이 매개 변수 이름 이 있 는 URL 을 검사 한 다음 해당 하 는 값 을 대상 url 로 전환 합 니 다.

<bean id="successHandler" class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
		<property name="targetUrlParameter" value="redirect"></property>
		<property name="redirectStrategy">
			<bean class="xxx.MyRedirectStrategy"></bean>
		</property>
	</bean>

3.사용자 정의 리 셋 정책

public class MyRedirectStrategy extends DefaultRedirectStrategy {
    @Override
    public void sendRedirect(final HttpServletRequest request, final HttpServletResponse response, final String url)
            throws IOException {
        if (url != null && !url.startsWith("/") && !url.startsWith("http://")) {
            final String redirectUrl = request.getContextPath() + "/index.html#" + url;
            response.sendRedirect(redirectUrl);
        } else {
            super.sendRedirect(request, response, url);
        }
    }
}

4.UI 엔 드 응답 처리

	function setSubmitUrl(form){
		var action = form.action;
		var hash = location.hash;
		if(hash){
			hash = hash.substring(1);
			action += "?redirect=" + hash;
		}
		form.action = action;
		return true;
	}

여기 서 hash 값 을 매개 변수 로 바 꾸 면 배경 으로 전송 할 수 있 습 니 다.로그 인 에 성공 하면 점프 하 는 hash url 로 바 꿀 수 있 습 니 다.그러면 사용자 의 수 요 를 실현 하고 우리 의 목 표를 달성 할 수 있 습 니 다.
"redirect 는 spring 설정 파일 의 targetUrl Parameter 매개 변수 값 과 일치 해 야 합 니 다."

좋은 웹페이지 즐겨찾기