Introdução: Após fazer login no ASP.NET, JSP pode usar o valor da Sessão no ASP.Net Este tópico apenas começou. O ASP.NET é salvo no banco de dados como dados binários. Em seguida, o JSP lê os dados binários no banco de dados e os desserializa em um
objeto
de sessão e, em seguida, os converte à força em um objeto de sessão JAVA. Durante a conversão no lado JAVA, ocorre um erro. ocorreu, e a busca por informações na Internet não conseguiu resolver, então foi utilizado ummétodo de substituição
A ideia do método de substituição:
No arquivo ASPX logado, após o login bem-sucedido, salve o valor da variável no arquivo. Sessão para uma tabela no banco de dados. A palavra-chave usa o SessionID do objeto Session do ASP.NET e, em seguida, cria um arquivo ASPX,
obtém
o SessionID do usuário conectado no momento e usa a instrução de redirecionamento do ASP.NET para ir para. o arquivo JSP. O formato do caminho da solicitação de URL é test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45. Seo ASP.NET não estiver conectado ou o login falhar, sucesso. SessionID no banco de dados.
Alguns leitores podem descobrir que a solicitação pode ser concluída sem usar o caminho da solicitação, como test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45. Sim, test.jsp
pode
ser usado? é o valor obtido após o login bem-sucedido do ASP.NET, mas desta forma alguns usuários podem conhecer os dados confidenciais do USERID (número do usuário).
Crie uma tabela
nome da tabela:
sessão_iis
nome do campo:
id varchar(26) --armazena o SessionID do ASP.NET
userid int(4) – armazena o número do usuário após login bem-sucedido
power int(4) --armazena o número de permissão do usuário
Fragmento de código-fonte do programa ASP.NET:
/*Após o login bem-sucedido, o seguinte CODEING pode ser colocado na página ASPX de verificação de login*/
//Registra o valor da sessão no banco de dados
private void WriteSession2DB(string sessionID,string sUID,string sPWR)
{
//Conecte-se ao código do banco de dados, os próprios leitores podem adicioná-lo
string sessID = sessionID;
string strSQL = "inserir em valores iis_session(id,userid,power)(@seionID,@UID,@PWR)";
//webmod.sqlConn é o objeto de conexão do banco de dados, os leitores podem substituí-lo por sua própria conexão de banco de dados.
SqlCommand sqlCmd = novo 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();
//Fecha a conexão com o banco de dados, os leitores podem adicionar sozinhos
}
/*Quando o usuário sai do sistema, exclua uma linha de dados correspondente ao SessionID no banco de dados, que pode ser colocada na página de saída ou no processo Session_END de Global.asax*/
//Exclua o valor da Sessão no banco de dados
vazio privado RemoveSession4DB()
{
//Conecte-se ao código do banco de dados, os próprios leitores podem adicioná-lo
string sessID = Sessão.SessionID;
string strSQL = "delete from iis_session where id='"+sessID+"'";
//webmod.sqlConn é o objeto de conexão do banco de dados e os leitores podem substituí-lo por sua própria conexão de banco de dados.
SqlCommand sqlCmd = novo SqlCommand(strSQL,webmod.sqlConn);
sqlCmd.ExecuteNonQuery();
//Fecha a conexão com o banco de dados e os leitores podem adicioná-la sozinhos
}
/*Uma página ASPX redirecionada para JSP, adicione o seguinte código em PAGE_LOAD desta página ASPX*/
private void Page_Load (remetente do objeto, System.EventArgs e)
{
string strSessionID = Session.SessionID.Trim();
String strRoot = " http://localhost/test.jsp?aspnetsessionid="+strSessionID ;
Response.Redirect(strRoot,true);
}
Trecho do código-fonte do programa JSP:
<%@ page contentType="text/html;charset=gb2312"%>
<%
/*
Classe de conexão de banco de dados própria, os próprios usuários podem substituí-la
*/
%>
<jsp:useBean id="db" scope="page" class="com.itbaby.bean.dbx.database"/>
<
%
String sASPNetSessionID=request.getParameter("aspnetsessionid");
banco de dados usado, os usuários podem substituí-lo por seu próprio
String sDBSourceName="itbaby_dbpool";
db.dbConnOpen(sDBSourceName);
String sSql="select userid,power from iis_session where id='"+sASPNetSessionID+"'"
//Os leitores podem substituir o código para ler o conjunto de resultados por conta própria
;
java.sql.ResultSet rs=db.getRs(sSql)
;
{
String suID = rs.getString(1);
String sPower = rs.getString(2);
/*Leia o valor SESSIONID correspondente no banco de dados e exiba-o. Se a SESSÃO ASP.NET expirar, não haverá valor*/.
out.print("<H1>Valor da sessão ASP.Net UserID = "+sUID+"</H1><br><br>");
out.print("<H1>Valor da sessão ASP.Net Power = "+sPower+"</H1><br><br>")
;
rs.close();
db.dbConnClose();
%>
Ok, embora não seja um método muito bom, ele pode ser usado e também protege alguns dados confidenciais do usuário. Continuarei considerando o uso de serialização e desserialização. .Maneiras de conseguir o compartilhamento de objetos de Sessão entre diferentes linguagens da WEB, em vez do compartilhamento de valores de Sessão acima.