ノート
をServletFilter
使用して、ユーザーがすでにログインしているかどうかを確認するために使用されるものがあります<url-pattern>
。ユーザーがログインしていない場合は、 にリダイレクトされlogin.xhtml
ます。
私の問題
ユーザーがログインした後、私のプログラムは常にdashboard.xml
(に基づいてnavigation-rule
) をリダイレクトします。last visited page
自動的にリダイレクトしたい。そのための可能な方法を提供していただけますか?
現在、私のソリューションはそのための作業です
しかし、私はそれを使用することに満足していません。Seam
サポートしますか?より良い方法を提供できますか?
私のServletFilter
では、最後にアクセスしたページを以下のように保持します
AuthenticationFilter.java
httpSession.setAttribute(Constants.ORIGINAL_VIEW_KEY, requestPath);
myLoginBean
で、ユーザーがログインした後に最後にアクセスしたページをリダイレクトします。
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();