¿Cómo puede el sistema Struts2 evitar que varias personas inicien sesión en la misma cuenta?
La idea es esta. Cuando cada usuario inicia sesión exitosamente, se obtiene su ID de sesión y su nombre de usuario se usa como clave y el ID de sesión se usa como valor para guardarlo en la Aplicación
(es decir, en el contenedor. La aplicación es una contenedor y solo usa uno)
Implementación específica:
import com.opensymphony.xwork2.ActionContext;
ActionContext ac = ActionContext.getContext(); p>
Map sessionMap = ac.getSession();
Map applicationMap = ac.getApplication(); //struts2 encapsula los objetos de la aplicación, por lo que su operación en el mapa también es una operación en el Solicitud. (Si no estás acostumbrado a hacer esto, también puedes usar el método original)
application..put (tu nombre de usuario, sessionId);
Y guarda tu información en el nombre de usuario de la sesión.
sessionMap.put("nombre de usuario", su nombre de usuario);
--------------------- --- --------------------
Si tienes una cuenta iniciada. Primero vaya al mapa de la aplicación y búsquelo. Compruebe si esta cuenta ha iniciado sesión
String lu = applicationMap.get(username);
if(lu == null){
Deposite en applicationMap correspondiente información. Es decir, el código anterior
} else{
Si no es igual a vacío, obtenga su propio ID de sesión y colóquelo en la aplicación para sobrescribir la sesión de inicio de sesión anterior.
application..put(username, mySessionId); mySessionId aquí está su propio sessionId
}
Después de hacer esto, debe modificar su programa. tu nombre de usuario en tu sesión cada vez que lo solicites (ya guardado al iniciar sesión)
Srtring nombre de usuario = sessionMap.get("nombre de usuario")
Luego encuéntralo en la aplicación p>
String sessionId = applicationMap.get(username);
Obtenga mySessionId de su sesión y compárelo con sessionId.
Si son iguales, continúa. Si no son iguales, salta a la página de inicio de sesión.
No es necesario modificar el programa. En su lugar, escriba un Interceptor e intercepte cada solicitud que contenga. Esto es más conveniente.
PD: El código anterior utiliza algunas sesiones encapsuladas por struts2. . Espera
Si no estás acostumbrado, puedes cambiarlo y escribir el método original para obtener la sesión.