Introducción: después de iniciar sesión en ASP.NET, JSP puede usar el valor de la sesión en ASP.Net. Este tema acaba de comenzar. La idea de Baby (itbaby.jss.cn) es la sesión serializada. ASP.NET se guarda en la base de datos como datos binarios. Luego, JSP lee los datos binarios en la base de datos y los deserializa en un
objeto
de sesión y luego los convierte a la fuerza en un objeto de sesión JAVA. Durante la conversión en el lado JAVA. Ocurrió y la búsqueda de información en Internet no pudo resolverlo, por lo que se utilizó un métodode reemplazo
.La idea del método de reemplazo:
en el archivo ASPX registrado, después de iniciar sesión correctamente, guarde el valor de la variable en el archivo. Sesión a una tabla en la base de datos La palabra clave usa el ID de sesión del objeto Sesión de ASP.NET y luego crea un archivo ASPX,
obtiene
el ID de sesión del usuario que ha iniciado sesión actualmente y usa la instrucción de redirección de ASP.NET para ir. el archivo JSP El formato de ruta de la solicitud de URL es test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45 SiASP.NET no está conectado o el inicio de sesión falla, Correcto. Aunque hay un valor para SessionID, no hay datos asociados con el. SessionID en la base de datos
Algunos lectores pueden encontrar que la solicitud se puede completar sin usar la ruta de solicitud, como test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45. Sí, ¿test.jsp
también
se puede transferir valores? es el valor obtenido después de que ASP.NET inicia sesión exitosamente, pero de esta manera algunos usuarios pueden conocer los datos confidenciales de USERID (número de usuario).
Crear una tabla
nombre de la tabla:
sesión_iis
nombre del campo:
id varchar(26): almacena el ID de sesión de ASP.NET
userid int(4): almacena el número de usuario después de iniciar sesión correctamente
power int(4) --almacena el número de permiso del usuario
Fragmento de código fuente del programa ASP.NET:
/*Después de iniciar sesión correctamente, se puede colocar la siguiente CODIFICACIÓN en la página ASPX de verificación de inicio de sesión*/
//Registrar el valor de la sesión en la base de datos
privado vacío WriteSession2DB (cadena ID de sesión, cadena sUID, cadena sPWR)
{
// Conéctese al código de la base de datos, los lectores pueden agregarlo ellos mismos
cadena sessID = sessionID;
string strSQL = "insert into iis_session(id,userid,power) value(@seionID,@UID,@PWR)";
//webmod.sqlConn es el objeto de conexión de la base de datos, los lectores pueden reemplazarlo con su propia conexión de base de datos
SqlCommand sqlCmd = nuevo SqlCommand(strSQL,webmod.sqlConn);
sqlCmd.Parameters.Add("@seionID",SqlDbType.VarChar).Value = sessID;
sqlCmd.Parameters.Add("@UID", SqlDbType.Int ).Value = Convert.ToInt32(sUID.Trim());
sqlCmd.Parameters.Add("@PWR", SqlDbType.Int).Value = Convert.ToInt32(sPWR.Trim());
sqlCmd.ExecuteNonQuery();
//Cierra la conexión a la base de datos, los lectores pueden agregarla ellos mismos
}
/*Cuando el usuario sale del sistema, elimina una fila de datos correspondiente al ID de sesión en la base de datos, que se puede colocar en la página de salida o en el proceso Session_END de Global.asax*/
//Elimina el valor de la sesión en la base de datos
vacío privado RemoveSession4DB()
{
// Conéctese al código de la base de datos, los lectores pueden agregarlo ellos mismos
cadena sessID = Session.SessionID;
string strSQL = "eliminar de iis_session donde id='"+sessID+"'";
//webmod.sqlConn es el objeto de conexión de la base de datos y los lectores pueden reemplazarlo con su propia conexión de base de datos.
SqlCommand sqlCmd = nuevo SqlCommand(strSQL,webmod.sqlConn);
sqlCmd.ExecuteNonQuery();
//Cierra la conexión a la base de datos y los lectores podrán agregarla ellos mismos
}
/*Una página ASPX redirigida a JSP, agregue el siguiente código en PAGE_LOAD de esta página ASPX*/
Page_Load vacío privado (remitente del objeto, System.EventArgs e)
{
cadena strSessionID = Session.SessionID.Trim();
Cadena strRoot = " http://localhost/test.jsp?aspnetsessionid="+strSessionID ;
Respuesta.Redirect(strRoot,verdadero);
}
Fragmento de código fuente del programa JSP:
<%@ página contentType="text/html;charset=gb2312"%>
<%
/*
Clase de conexión de base de datos propia, los usuarios pueden reemplazarla ellos mismos
*/
%>
<jsp:useBean id="db" alcance="page" class="com.itbaby.bean.dbx.database"/>
<%
String sASPNetSessionID=request.getParameter("aspnetsessionid");
//Una conexión del grupo de conexiones es Base de datos usada, los usuarios pueden reemplazarla con su propia
Cadena sDBSourceName="itbaby_dbpool";
db.dbConnOpen(sDBSourceName);
String sSql="select userid,power from iis_session donde id='"+sASPNetSessionID+"'"
// Los lectores pueden reemplazar el código para leer el conjunto de resultados por sí mismos
;
java.sql.ResultSet rs=db.getRs(sSql);
si(rs.next())
{
Cadena sUID = rs.getString(1);
String sPower = rs.getString(2);
/*Lea el valor SESSIONID correspondiente en la base de datos y muéstrelo. Si la SESIÓN ASP.NET se agota, no habrá ningún valor*/.
out.print("<H1>Valor de sesión ASP.Net ID de usuario = "+sUID+"</H1><br><br>");
out.print("<H1>ASP.Net Valor de sesión Potencia = "+sPower+"</H1><br><br>")
;
rs.close();
db.dbConnClose();
%>
Bueno, aunque no es un método muy bueno, se puede utilizar y también protege algunos datos confidenciales del usuario. Seguiré considerando el uso de la serialización y la deserialización. Formas de lograr compartir objetos de sesión entre diferentes lenguajes WEB en lugar de lo anterior, compartir valores de sesión.