3

現在、GlassfishでJPA / EJB / JSFアプリケーションを実行しており、認証にセキュリティJDBCレルムを使用しています。レルムは非常にうまく機能し、顧客がナビゲーションの小さな変更を要求するまで、要件を満たしています。

現在、保護されたページにアクセスしようとすると、認証メカニズムによってweb.xmlで指定されたログインページにリダイレクトされます。完全!認証が成功すると、アクセスしようとしていたページにリダイレクトされます。けっこうだ。ただし、顧客は、認証が成功するたびに、ユーザーが以前にアクセスしようとしていたページに関係なく、代わりにホームページにリダイレクトする必要があると判断しました。問題は、認証が成功するたびに固定ページにリダイレクトされるように、レルムをどのように変更できるかということです。

4

1 に答える 1

3

できません。コンテナー管理認証では、そのきめ細かい構成は許可されません(これが、ApacheShiroやSpringSecurityなどサードパーティ認証フレームワークが存在する理由です)。

最善の策は、コンテナ管理ログインをプログラムログインに置き換えることです。このようなJSFアクションメソッドに送信する<form action="j_security_check">byを変更します<h:form>

public void login() throws IOException {
    FacesContext context = FacesContext.getCurrentInstance();
    ExternalContext externalContext = context.getExternalContext();
    HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();

    try {
        request.login(username, password);
        externalContext.redirect(homepageURL);
    } catch (ServletException e) {
        context.addMessage(null, new FacesMessage("Unknown login"));
    }
}

参照:

于 2013-01-11T14:08:01.193 に答える