我试图在维护会话时以管理员身份注销 jsf 应用程序中的用户,但这些努力没有产生任何结果。用户可以在我的应用程序中轻松地使他们自己的会话无效,但我想要实现的是另一个用户说管理员可以注销其他用户的情况。
所以我的主要问题是如何访问其他用户的会话,是否可以将 jsf 会话存储在数据库中?
感谢您的任何帮助。
我试图在维护会话时以管理员身份注销 jsf 应用程序中的用户,但这些努力没有产生任何结果。用户可以在我的应用程序中轻松地使他们自己的会话无效,但我想要实现的是另一个用户说管理员可以注销其他用户的情况。
所以我的主要问题是如何访问其他用户的会话,是否可以将 jsf 会话存储在数据库中?
感谢您的任何帮助。
此代码创建一个 Sessionlistener 来管理可以注入的列表中的打开会话。然后你可以通过注入会话列表@SessionList
会话监听器.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());
}
}
会话列表.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;
}
}