我正在尝试以管理员身份注销jsf应用程序中的用户,同时我维护会话,但努力并没有产生任何结果。 用户可以在我的应用程序中轻松地使自己的会话无效,但我想要实现的是另一个用户说管理员可以注销其他用户的情况。
所以我的主要问题是如何访问其他用户的会话,是否可以将jsf会话存储在数据库中?
感谢您的帮助。
答案 0 :(得分: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 {
}
SessionProducer.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;
}
}