X
广告
首页 > 语言 > 关键词  > ASP.NET最新资讯  > 正文

JSP与ASP.Net之间的Session值共享

2008-09-25 11:54 · 稿源:互联网

介绍:ASP.NET中登录后,JSP可以用ASP.Net中的Session的值
这个话题刚开始,宝宝(itbaby.jss.cn)的思路是ASP.NET中序列化Session以二进制数据保存到数据库,然后由JSP读取数据库中的二进制数据反序列化成Session对

象,再强制转化成JAVA的Session对象,在JAVA端转换时,出现了错误,找遍网上的资料也没能解决,故采用一种替换的方式.

替换的方式的思路:

登录的ASPX文件中,在登录成功后将Session中的变量值保存到数据库中的一张表,关键字使用ASP.NET的Session对象的SessionID,然后建立一个ASPX文件,取

得当前登录用户的SessionID,并使用的ASP.NET重定向语句,转到JSP文件,该URL请求的路径格式为test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45,如果

ASP.NET没有登录或登录不成功,虽然有SessionID的值,但数据库中是没有该SessionID关联的数据

可能有的读者发现,不用test.jsp?aspnetsessionid=ffj12d455p0ujr45vdqwhh45这样的请求的路径也可以完成,是的,可以用test.jsp?userid=1111这样的方

式也传递值,当然userid是由ASP.NET登陆成功后,取得的值,但这样有些用户就可以知道USERID(用户编号)这个敏感数据了.


建立一张表
tablename:
iis_session
fieldname:
idvarchar(26)--存放ASP.NET的SessionID
useridint(4)--存放登录成功后的用户编号
powerint(4)--存放用户的权限编号


ASP.NET程序源码片段:

/*登录成功后,可将下列CODEING放在登录的验证ASPX页面中*/

//记录Sessionvalue到数据库
privatevoidWriteSession2DB(stringsessionID,stringsUID,stringsPWR)
{
//连接数据库代码,读者自行添加
stringsessID=sessionID;
stringstrSQL="insertintoiis_session(id,userid,power)values(@seionID,@UID,@PWR)";

//webmod.sqlConn是数据库的连接对象,读者自行替换成自己的数据库连接
SqlCommandsqlCmd=newSqlCommand(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();
//关闭数据库连接,读者自行添加

}

/*当用户退出系统,将数据库中对应的SessionID的一行数据删除,可放在退出页面,或Global.asax的Session_END过程中*/

//删除数据库中的Sessionvalue
privatevoidRemoveSession4DB()
{
//连接数据库代码,读者自行添加
stringsessID=Session.SessionID;
stringstrSQL="deletefromiis_sessionwhereid='"+sessID+"'";

//webmod.sqlConn是数据库的连接对象,读者自行替换成自己的数据库连接
SqlCommandsqlCmd=newSqlCommand(strSQL,webmod.sqlConn);
sqlCmd.ExecuteNonQuery();
//关闭数据库连接,读者自行添加
}


/*一个重定向到JSP的ASPX页面,在这个ASPX页面的PAGE_LOAD中添加如下代码*/
privatevoidPage_Load(objectsender,System.EventArgse)
{
stringstrSessionID=Session.SessionID.Trim();
StringstrRoot="Response.Redirect(strRoot,true);
}

JSP程序源码片段:
<%@pagecontentType="text/html;charset=gb2312"%>
<%
/*
自己的数据库连接类,用户可以自己替换
*/
%>
<jsp:useBeanid="db"scope="page"class="com.itbaby.bean.dbx.database"/>

<%

StringsASPNetSessionID=request.getParameter("aspnetsessionid");

//使用了连接池连接数据库,用户可以替换成自己的
StringsDBSourceName="itbaby_dbpool";
db.dbConnOpen(sDBSourceName);

StringsSql="selectuserid,powerfromiis_sessionwhereid='"+sASPNetSessionID+"'";

//读者自己替换读出结果集的代码
java.sql.ResultSetrs=db.getRs(sSql);

if(rs.next())
{

StringsUID=rs.getString(1);
StringsPower=rs.getString(2);

/*将数据库中对应的SESSIONID的值读出来,并显示,如果ASP.NET的SESSION超时,将没有值*/
out.print("<H1>ASP.NetSessionValueUserID="+sUID+"</H1><br><br>");
out.print("<H1>ASP.NetSessionValuePower="+sPower+"</H1><br><br>");

}
rs.close();

db.dbConnClose();

%>

好了,虽然不是很好的方法,但也可以用,也同样保护了用户的一些敏感数据
我将继续考虑使用序列化和反序列化的方式来达到不同的WEB语言之间共享Session对象而不是上面的,共享Session的值

  • 相关推荐
  • 大家在看
  • Netflix联合CEO:《鱿鱼游戏》或将成为平台最受欢迎的电视剧

    据外媒报道,Netflix联合CEO Ted Sarandos于当地时间周一表示,Netflix的韩国连续剧《鱿鱼游戏》很有可能成为Netflix迄今为止最受欢迎的电视剧。“《鱿鱼游戏》肯定会成为我们在世界上最大的非英语节目,”Sarandos在周日在洛杉矶举行的Code大会上说道。据悉,Sarandos还是Netflix内容部门的主管。另外他还补充道--“这很有可能会成为我们有史以来最盛大的影视作品。”不过Sarandos并没有具体说明用来衡量其受欢迎程度的指标。传统

  • Canonical宣布启动Ubuntu 22.01“Jammy Jellyfish”LTS开发项目

    随着 Canonical 今日正式开放了“Jammy”存档,意味着 Ubuntu 22.04“Jammy Jellyfish”长期支持版本(LTS)的开发项目也被正式摆上了议事日程。如果一切顺利,新 LTS 版本将于 2021 年 4 月 21 日到来。目前“Jammy”存档已经向开发者开放,且与 Debian 保持自动同步。截图(来自:Canonical)与 Ubuntu 22.04 一同到来的,包括 Python 3.10 和 OpenSSL 3.0 。而在未来半年内,LTS 版本还计划引入 PHP 8.1、Ruby 3.0、GNOME 42.0?

  • 以引擎为工具,Cocos 助力游戏开发者开垦 IoT 蓝海

    近日,Cocos 引擎董事长陈昊芝参与了 BIGC2021 北京国际游戏创新大会,并在现场分享了国产游戏引擎 Cocos 的技术蝶变。自 2010 年以 Cocos2d-x 进入移动游戏开发领域始, 10 余年间 Cocos 引擎已经成长为覆盖游戏、教育、电商、数字孪生种种场景的全能通用型引擎,并在全球拥有 150 万的注册开发者, 30 万的月活跃开发者,遍布全球超过 203 个国家和地区,覆盖超过 16 亿玩家设备。被 Unity 写入招股书列为竞争对手,与 Unreal,U

  • Netflix变性员工计划10月20日举行罢工以向CEO表达抗议

    据外媒报道,Netflix的变性员工资源小组正计划于10月20日举行全公司范围的罢工以抗议联合CEO Ted Sarandos就Dave Chappelle的最新喜剧特辑节目《The Closer》所作的声明。“变性人的生命很重要(Trans Lives Matter)。变性人的权利很重要(Trans Rights Matter)。而作为一个组织,Netflix一直没有在我们娱乐世界的使命中表现出深切的关怀,一再发布伤害跨性别社区的内容并不断地创造代表和提升跨性别内容的内容。我们可以而且必须?

  • 专利显示三星可能正在开发一款太阳能Galaxy Watch

    据LetsGoDigital在美国专利商标局(USPTO)于9月16日发布后发现了三星一项新专利,该专利早在2019年提交,暗示三星可能正在开发一款太阳能供电的智能手表。

  • Matternet自动无人机停靠站在瑞士首次亮相

    没有人确切地知道送货无人机送货将如何适应未来的物流,但有一点是肯定的:飞机不会直接把重要的有效载荷扔到别人的草坪上。Matternet's Station是一个自动降落空间和有效载荷控制塔,可能是一个解决方案,这个像花一样的结构在瑞士的一个医疗机构从效果图变成了现实。Matternet's Station看起来就像60年代科幻电影中的一个道具。然而,这种不寻常的形状是有作用的,它为货运无人机提供了一个安全着陆和更换电池的地方,保护其不受

  • 彭博社:11家开发商已获得4K任天堂Switch开发

    虽然任天堂要在10月份上市一款Switch新机,但仅仅是初代Switch的部分配置升级,完全没有达到玩家期待的标准。不过彭博社在本周三报道称,开发Nintendo Switch 游戏的开发人员已经获得了4K版本的Nintendo Switch开发人员套件。

  • 传苹果正在开发类Switch游戏机 Apple TV机顶盒将迎来大变化

    iDropNews 爆料称,苹果或推出类似任天堂 Switch 的混合式游戏机,并将对 Apple TV 机顶盒展开重新设计。2006 年初次亮相的 Apple TV,当时还叫做 iTV 。但由于和欧洲某家新闻机构重名,苹果还是在被起诉后更名为 Apple TV、并沿用至今。最新消息是,下一代 Apple TV 或迎来类似 Mac mini 的改进。在去年的 iPhone 12 身上,我们看到了 iPhone 4 / 5 时代直角边框设计的回归。今年 4 月,苹果又延续着这理念,重新设计了 Apple TV

  • Netflix CEO身穿《鱿鱼游戏》标志性运动服参加Q3财报采访

    据外媒报道,Netflix联合CEO Reed Hastings周二穿着《鱿鱼游戏》运动服出现在他价值2830亿美元的公司第三季度财报采访中,以此来宣传该服务的突破性热门系列,这恰好演变成了Netflix的一项重要的商品销售工作。通常情况下,Hastings都会穿着灰色毛衣背心出席这些季度会议,讨论自由现金流和摊销等问题。但在过去的电话会议上,他还会拿出一些愚蠢的促销毛衣,对《怪奇物语》和《马男波杰克》(后者是Hasting的个人最爱)等节目进行

  • Censinet报告:医疗机构称网络攻击增加死亡率并延误病人治疗

    根据网络安全公司Censinet赞助的一份新报告,在过去两年中遭受勒索软件攻击的医疗机构中,几乎有四分之一的机构表示,在网络攻击后他们机构的病人死亡率有所增加。这一发现增加了越来越多的数据,表明网络攻击不仅造成财务或后勤问题--它们也可能是重大的健康风险。Censinet首席执行官兼创始人Ed Gaudet说:“勒索软件对病人护理的影响已经足够大,这是不可否认的。我们不应该害怕看这些数据,并继续推动这个问题的解决。”由一家?

这篇文章对你有价值吗?

  • 热门标签