2

セッションを維持している間に、管理者としてjsfアプリケーションでユーザーをログアウトしようとしていますが、何も得られません。ユーザーは自分のアプリケーションで自分のセッションを簡単に無効にすることができますが、私が達成したいのは、管理者が他のユーザーをログアウトできると別のユーザーが言う状況です。

私の主な質問は、他のユーザーのセッションにアクセスするにはどうすればよいですか? また、jsf セッションをデータベースに保存することは可能ですか?

ご協力ありがとうございます。

4

1 に答える 1

2

このコードは、挿入可能なリスト内の開いているセッションを管理する Sessionlistener を作成します。次に、セッションのリストを挿入できます@SessionList

SessionListener.java

public class SessionListener implements HttpSessionListener {

  @Inject
  @SessionList
  private List<HttpSession> sessions;

  @Override
  public void sessionCreated(HttpSessionEvent event) {
    session.add(event.getSession());
  }

  @Override
  public void sessionDestroyed(HttpSessionEvent event) {
        session.remove(event.getSession());
  } 

}

SessionList.java

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Qualifier
public @interface SessionList {
}

セッションプロデューサー.Java

@ApplicationScoped
public class SessionProducer {
   private List<HttpSession> session;

   @Produces
   @SessionList
   public void List<Session> getSessions() {
      if(sessions == null) sessions = new LinkedList<HttpSession>();
      return sessions;
   }
}
于 2013-11-14T10:12:09.920 に答える