17

ユーザー(ユーザー名、ifLoggedなど)を追跡するためにuserSessionと呼ばれるSessionScoped Beanがあります。一部のページをフィルタリングしたいので、作成した webFilter から Bean にアクセスする必要があります。それ、どうやったら出来るの?ビーンを潜在的に見えるようにインポートすることさえ不可能のようです。

4

2 に答える 2

28

内部では、JSF はセッション スコープのマネージド Bean をHttpSessionマネージド Bean 名をキーとして の属性として格納します。

したがって、あなたが持っている場合、これはメソッド@ManagedBean @SessionScoped public class User {}内で行う必要があります:doFilter()

HttpSession session = ((HttpServletRequest) request).getSession(false);
User user = (session != null) ? (User) session.getAttribute("user") : null;

if (user != null && user.isLoggedIn()) {
    // Logged in.
}

または、実際に JSF の代わりに CDI を使用して Bean を管理している場合@Injectは、フィルターで直接使用してください。

以下も参照してください。

于 2013-01-22T15:49:53.940 に答える
4

別の方法として、CDI-beans を使用して、sessionbean を通常どおり注入することができます。

于 2013-01-22T19:25:24.550 に答える