소개: ASP.NET에 로그인한 후 JSP는 ASP.Net의 세션 값을 사용할 수 있습니다. 이 주제는 이제 막 시작되었습니다. Baby(itbaby.jss.cn)의 아이디어는 다음과 같습니다. ASP.NET은 이진 데이터로 데이터베이스에 저장됩니다. 그런 다음 JSP는 데이터베이스의 이진 데이터를 읽고 이를 Session
개체
로 역직렬화한 다음 이를 JAVA Session 개체로 강제 변환합니다. 가 발생하여 인터넷에서 정보를 검색해도 해결되지 않아 대체 방법을 사용하게 되었습니다. 대체방법
아이디어:
로그인한 ASPX 파일에서 로그인 성공 후 변수 값을 저장합니다. 데이터베이스의 테이블에 대한 세션입니다. 키워드는 ASP.NET의 Session 개체의 SessionID를 사용한 다음 ASPX 파일을 생성하고 현재 로그인된 사용자의 SessionID를
얻은
다음 ASP.NET 리디렉션 문을 사용하여 JSP 파일의 경로 형식은 test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45입니다.ASP.NET이 로그인되어 있지 않거나 로그인에 실패하면 SessionID 값이 있지만 관련 데이터가 없습니다. 데이터베이스의 SessionID.
일부 독자는 test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwh45와 같은 요청 경로를 사용하지 않고도 요청을 완료할 수 있다는 것을 알 수 있습니다. 예, Userid=1111
도
값을 전송할 수 있습니다. 는 ASP.NET에 성공적으로 로그인한 후 얻은 값이지만, 이를 통해 일부 사용자는 USERID(사용자 번호)의 민감한 데이터를 알 수 있습니다.
테이블 만들기
테이블 이름:
iis_session
필드 이름:
id varchar(26) --ASP.NET의 SessionID를 저장합니다.
userid int(4) – 로그인 성공 후 사용자 번호를 저장합니다.
power int(4) --사용자의 허가 번호 저장
ASP.NET 프로그램 소스 코드 조각:
/*로그인 성공 후 다음 코딩이 로그인 확인 ASPX 페이지에 배치될 수 있습니다.*/
//세션 값을 데이터베이스에 기록합니다.
개인 무효 WriteSession2DB(문자열 세션ID, 문자열 sUID, 문자열 sPWR)
{
//데이터베이스 코드에 연결합니다. 독자가 직접 추가할 수 있습니다.
문자열 sessID = 세션ID;
string strSQL = "iis_session(id,userid,power) 값(@seionID,@UID,@PWR)에 삽입";
//webmod.sqlConn은 데이터베이스의 연결 개체이며 독자는 이를 자신의 데이터베이스 연결로 대체할 수 있습니다.
SqlCommand sqlCmd = new 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();
//데이터베이스 연결을 닫습니다. 독자가 직접 추가할 수 있습니다
. }
/*사용자가 시스템을 종료하면 종료 페이지 또는 Global.asax의 Session_END 프로세스에 배치될 수 있는 데이터베이스의 SessionID에 해당하는 데이터 행을 삭제합니다.*/
//데이터베이스에서 세션 값 삭제
개인 무효 RemoveSession4DB()
{
//데이터베이스 코드에 연결합니다. 독자가 직접 추가할 수 있습니다.
문자열 sessID = Session.SessionID;
string strSQL = "delete from iis_session where id='"+sessID+"'";
//webmod.sqlConn은 데이터베이스의 연결 개체이며 독자는 이를 자신의 데이터베이스 연결로 바꿀 수 있습니다.
SqlCommand sqlCmd = new SqlCommand(strSQL,webmod.sqlConn);
sqlCmd.ExecuteNonQuery();
//데이터베이스 연결을 닫으면 독자가 직접 추가할 수 있습니다.
}
/*JSP로 리디렉션된 ASPX 페이지, 이 ASPX 페이지의 PAGE_LOAD에 다음 코드를 추가합니다*/
개인 무효 Page_Load(개체 전송자, System.EventArgs e)
{
string strSessionID = Session.SessionID.Trim();
String strRoot = " http://localhost/test.jsp?aspnetsessionid="+strSessionID ;
Response.Redirect(strRoot,true);
}
JSP 프로그램 소스 코드 조각:
<%@ 페이지 contentType="text/html;charset=gb2312"%>
<%
/*
자체 데이터베이스 연결 클래스, 사용자가 직접 교체 가능
*/
%>
<jsp:useBean id="db"scope="page" class="com.itbaby.bean.dbx.database"/>
<%
String sASPNetSessionID=request.getParameter("aspnetsessionid")
//연결 풀 연결은 다음과 같습니다. 사용된 데이터베이스를 사용자가 자신의 데이터베이스로 교체할 수 있습니다.
문자열 sDBSourceName="itbaby_dbpool";
db.dbConnOpen(sDBSourceName);
String sSql="select userid,power from iis_session where id='"+sASPNetSessionID+"'"
//리더는 결과 집합을 읽기 위한 코드를 스스로 교체할 수 있습니다.
java.sql.ResultSet rs=db.getRs(sSql)
if(rs.next())
{
문자열 sUID = rs.getString(1);
String sPower = rs.getString(2);
/*데이터베이스에서 해당 SESSIONID 값을 읽고 표시합니다. ASP.NET SESSION 시간이 초과되면 값이 없습니다.*/
out.print("<H1>ASP.Net 세션 값 UserID = "+sUID+"</H1><br><br>");
out.print("<H1>ASP.Net 세션 값 Power = "+sPower+"</H1><br><br>")
}
rs.close();
db.dbConnClose();
%>
좋습니다. 비록 좋은 방법은 아니지만 사용할 수 있고 사용자의 민감한 데이터도 보호할 수 있습니다. 계속해서 직렬화 및 역직렬화 사용을 고려해 보겠습니다. 위의 방법 대신 서로 다른 WEB 언어 간에 세션 개체를 공유하는 방법, 세션 값 공유