2012-09-27 2 views
1

로그인 페이지에 로그인 한 후 JBoss Seam이 사용자의 "마지막으로 방문한 페이지"를 리디렉션 할 수 있습니까?

나는 사용자가 이미 <url-pattern>를 사용하여 로그인 여부를 확인하는 데 사용됩니다 ServletFilter 있습니다. 사용자가 기록하지 않으면 login.xhtml으로 리디렉션됩니다. 사용자가 로그인 한 후

내 문제는

, 내 프로그램은 항상합니다 (navigation-rule 기준) dashboard.xml 리디렉션됩니다. last visited page을 자동으로 리디렉션하고 싶습니다. 가능한 방법을 제공해 주시겠습니까?

현재 내 Soluction 나는 그것을 사용하는 것이 행복하지 않다, 그

에 대한 작품이다 그러나. Seam가 지원됩니까? 더 나은 방법을 제공해 줄 수 있습니까? 내 ServletFilter에서

, 나는 마지막으로 사용자가 로그인 한 후 마지막 방문 페이지를 리디렉션, 내 LoginBean에서

httpSession.setAttribute(Constants.ORIGINAL_VIEW_KEY, requestPath); 

AuthenticationFilter.java

다음과 같이 페이지를 방문하십시오.

LoginBean.java

ELContext elContext = facesContext.getELContext(); 
Application application = facesContext.getApplication(); 
ExpressionFactory eFactory = application.getExpressionFactory(); 
ValueExpression binding = eFactory.createValueExpression(elContext, "#{" + Constants.VISIT_KEY_SCOPE + Constants.VISIT_KEY + "}", Visit.class); 
binding.setValue(elContext, visit); 

ValueExpression originalViewBinding = eFactory.createValueExpression(elContext, "#{" + Constants.ORIGINAL_VIEW_SCOPE + Constants.ORIGINAL_VIEW_KEY + "}", String.class); 

String originalViewId = (String) originalViewBinding.getValue(elContext); <--- last visited view id. 

UIViewRoot viewRoot = application.getViewHandler().createView(facesContext, originalViewId) ; 
facesContext.setViewRoot(viewRoot); 
facesContext.renderResponse(); 

답변

0

IdentityCredentials 경우 사용에서 다음 제거, 재 지정 페이지가 마지막으로 액세스 (페이지를 방문 페이지, 로그인 필요) 자동으로 기록 된 후. 아래와 같이 component.xml에 구성을 구성해야합니다.

component.xml

<?xml version="1.0" encoding="UTF-8"?> 
<components -----> 
    <event type="org.jboss.seam.security.loginSuccessful"> 
     <action execute="#{redirect.returnToCapturedView}"/> 
    </event> 
</components> 
0

하면 login.page.xml

<navigation from-action="#{identity.login}"> 
    <rule if="#{identity.loggedIn}"> 
    <redirect view-id="/view/dashboard.xhtml"/> 
    </rule> 

+0

당신이 페이지에 대한 사용자 반환 그가 현장에 있던 마지막이라고 할 – CycDemo

+0

내 질문 마지막 페이지 방문? Seam은 기본적으로이 기능을 제공하지 않으므로 현재 페이지의 view-id를 저장하고 (예를 들어 DB에) 로그인 한 다음 해당 뷰로 리디렉션하고 소스 코드를 확인하는 글로벌 페이지 작업을 추가해야합니다 리디렉션하는 방법에 대한 단서를 제공하는 ** 리디렉션 ** 구성 요소 – AndresQ