JBoss 7.1、MySQL/PostgreSQL DB、JSF 2.0 と CDI Bean を使用しています。
ログインとパスワードによるDBに基づく認証を実装する必要があります。管理(管理)ポータルがあります。クライアントがログインせずに制限されたページを開くと、クライアントがログインしていない場合、要求をlogin.*ページにリダイレクトする必要があります。
を使用してそれを実行しようとしましたPhaseListener。ログインとログアウトはできますが、別のページを開こうとすると問題が発生しました。クラス@Named("user") public class UserManager内で Bean を取得できません。PhaseListener、& EL ...を使用して取得しようとしましたがFacesContext、すべてが役に立ちませんでした。
はUserManagerログインを検証し、ログインしているユーザーをcurrentプロパティとして保存します。PhaseListenerすべてのリクエストで、 if #{user.current}is notをチェックインしたいと思いnullます。しかし、私は#{user}豆を手に入れることができませんPhaseListener。
@Namedまたは でBeanを取得するにはどうすればよいですbeforePhase()かafterPhase()?
更新:これまでの私の試みは次のとおりです:
private boolean loggedIn( FacesContext context ) throws IOException, ServletException
{
LOGSTORE.debug( "loggedIn().2 " );
HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
// ELContext elContext = FacesContext.getCurrentInstance().getELContext();
// UserManager userManager = (UserManager) FacesContext.getCurrentInstance().getApplication()
// .getELResolver().getValue( elContext, null, "user" );
HttpSession session = (HttpSession) context.getExternalContext().getSession( true );
UserManager userManager = (UserManager) session.getAttribute( "user" );
// UserManager userManager = (UserManager) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get( "user" );
if (!StringUtils.contains( ((HttpServletRequest) context.getExternalContext().getRequest())
.getRequestURL().toString(), URL_SESSION_EXPIRED ))
{
if (userManager == null || !userManager.isLoggedIn())
{
LOGSTORE.debug( " userManager is " + (userManager == null ? "" : "not ") + " null" );
if (userManager != null)
{
LOGSTORE.debug( " userManager.isLoggedIn() is "
+ (userManager.isLoggedIn() ? "TRUE" : "FALSE") );
}
LOGSTORE.debug( " doPhaseFilter() - START REDIRECT " );
response.sendRedirect( request.getContextPath() + "/" + homepage + "?auth-failed" );
}
return false;
} else
{
LOGSTORE.debug( "loggedIn().3 it is " + homepage );
return true;
}
}