0

ログインしていないときにユーザーをリダイレクトするAuthenticationFilterに取り組んでいます。私はTomEE 7.0.0-M2を使用しているため、Java-EE7をサポートしています。

AuthenticationFilter

@WebFilter(urlPatterns = "/*", dispatcherTypes = {DispatcherType.FORWARD, DispatcherType.REQUEST})
public class AuthenticationFilter implements Filter {

@Inject
private LoginBean loginBean;
...

LoginBean

import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
import java.io.Serializable;

@Named
@SessionScoped
public class LoginBean implements Serializable {

問題は、注入された LoginBean が login.xhtml のインスタンスではないことです。そのため、ユーザーが正常にログインしたかどうかを確認できません。

LoginBean はセッション属性にありませんが、ここで正しい loginBean を見つけましたが、アクセス方法がわかりません。しかし、Bean は CDI にあるように見えますが、WebFilter からどのようにアクセスできますか?

4

1 に答える 1

0

まだ答えはありませんが、BalusC がここで言及した別の解決策があります。

ユーザーが正常にログインしたら、 loginBean を手動で sessionMap に追加するだけです

FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("loginBean", this);

WebFilter で loginBean にアクセスします

session.getAttribute("loginBean")

これは良い解決策ですか?つまり..回避策のように聞こえます。

于 2016-02-29T21:56:02.880 に答える