首页新闻找找看学习计划

asp.net如何从sessionID获取session

0
悬赏园豆:20 [已解决问题] 解决于 2012-06-07 17:56

情景:用户b得到了用户a的sessionid,如何根据此sessionid构造一个session对象,从而获得用户a的session值?

问题补充:

为了让大家更明白我的意思,请大家耐心看一下php的做法。

PHP通过session id 实现session共享和登录
2010-07-07 10:18

其实这个应该不算是疑难问题,就是php中用 sessionid得到session的值,因为的确很简单,只是可能大家平时用不到所以没有注意到罢了。

先说说,这个机制的用途吧,到现在为止战地知道这个机制有两个方面的用途:
其实这个应该不算是疑难问题,就是php中用 sessionid得到session的值,因为的确很简单,只是可能大家平时用不到所以没有注意到罢了。

先说说,这个机制的用途吧,到现在为止战地知道这个机制有两个方面的用途:

首先,多服务器共享session问题,这个大家应该都能够理解的,当一个网站的用户量过大,就会使用服务器集群,例如专门有一个登录用的服务器。 用户通过登录服务器登录之后,登录服务器保存了用户的登录信息session,而其他受访问的服务器,例如电影服务器没有这个session,那么我们就 要通过一个session的唯一标识来共享这个session了——具体session的共享超出了本文的范围,请自行查阅资料。

第二个用途就是,验证同一用户的不同会话,这个比较难理解。这样说吧,一个用户并非通过浏览器来请求连接,而是通过socket或者其它方式来请求 数据的时候,我们首先要对他进行用户登录验证,验证成功之后,就下发一个sessionid给他,然后他每次请求的时候就携带这个sessionid,我 们通过这个sessionid来判断session是否已经存在,如果存在我们就认定用户已经登录……

对于第一个问题,我们可以把sessionid保存在数据库中得以实现,这个方法比较安全而且应用广泛,但是不是我们讨论的范围哦

第二个问题,其实已经很简单了,看一下代码

首先验证的时候产生一个sessionid;



<?php  

Session_start();    
$sessionId = session_id();//得到sessionid    
     
//将session下发给客户端    
.........    
?>   


客户端携带sessionid这个变量来请求数据


<?php
Session_id(‘$sessionid’);//注意这个时候session_id()这个函数是带有参数的
Session_start();//这个函数必须在session_id()之后
?>这个时候session已经是登录验证时候的session了。

注意:在sessionServer.php中如果使用thinkphp等其他自动启动session_start();函数的框架时,必须先调用 session_destory()函数来清空session。

caochao88的主页 caochao88 | 初学一级 | 园豆:4
提问于:2012-01-03 23:12
< >
分享
最佳答案
0

session 是当前会话的数据;你这样就是二个会话;应该得不到的;你可以用Application这个试试传值 吧;这个是全局的;

收获园豆:20
画方软件 | 小虾三级 |园豆:778 | 2012-01-04 15:03
其他回答(5)
0

session["字段名"],这样获取 。

梦里寻人 | 园豆:11377 (专家六级) | 2012-01-04 10:25

谢谢,可是你的回答与我的题目不符

支持(0) 反对(0) caochao88 | 园豆:4 (初学一级) | 2012-01-04 10:27
0

还用什么构造啊?session本来就是传一个值过来,接收到就用,还想怎样

ERS | 园豆:728 (小虾三级) | 2012-01-04 11:57

试想一下发邮件给用户并判断用户身份的情景,将用户当前的sessionid保存至数据库,然后将sessionid放在url中,将该url放在邮件内容中发送至客户,当用户需要修改密码或其它业务时,他可以点击邮件中的url。然后网站可以根据url中传递过来的sessionid判断用户是否同一人。

在这种情况下,就需要由sessionid取回session,并得到session的中值。请看php的做法:

在php中的解决办法:

1:在php中解决这个sesssion丢失,只需两个函数就搞定了,

 

session_start();
$sid=session_id();

session_id这个函数就是取得登陆界面的SessionID。

 

 2:然后我们就可以根据这个SessionID构造一个Session:

$sid=$_GET['sid'];

session_id($sid); 

 

session_start();

 Session_id这个函数就是重新构造Session。

支持(0) 反对(0) caochao88 | 园豆:4 (初学一级) | 2012-01-05 09:54

@tudas: 

情景模式:

感觉应该是服务器端生成一个码添加入数据库,并把码连同url一起邮件到邮箱,在数据库码与客户邮箱对应关系,然后客户端点击url之后追加自己的邮箱地址返回,服务器端就可以根据传入的码与客户邮箱确定唯一信息,然后进行密码修改,此链接具有唯一性,可防止发送至邮箱的url泄露,并避免同一个url多次修改密码的问题

支持(0) 反对(0) ERS | 园豆:728 (小虾三级) | 2012-01-05 10:01
0

LZ动机不纯...

dotNetDR_ | 园豆:2058 (老鸟四级) | 2012-01-04 15:06

试想一下发邮件给用户并判断用户身份的情景,将用户当前的sessionid保存至数据库,然后将sessionid放在url中,将该url放在邮件内容中发送至客户,当用户需要修改密码或其它业务时,他可以点击邮件中的url。然后网站可以根据url中传递过来的sessionid判断用户是否同一人。

在这种情况下,就需要由sessionid取回session,并得到session的中值。请看php的做法:

在php中的解决办法:

1:在php中解决这个sesssion丢失,只需两个函数就搞定了,

 

session_start(); $sid=session_id();

session_id这个函数就是取得登陆界面的SessionID。

 

2:然后我们就可以根据这个SessionID构造一个Session:

$sid=$_GET['sid'];

session_id($sid);

 

session_start();

Session_id这个函数就是重新构造Session。

支持(0) 反对(0) caochao88 | 园豆:4 (初学一级) | 2012-01-05 09:55

@tudas: 请教一下Php的SessionID是体现在HTTP传输协议上的那一个部分??

支持(0) 反对(0) dotNetDR_ | 园豆:2058 (老鸟四级) | 2012-01-05 11:31
0

我理解楼主的意思,其实这种需求还是比较多的,譬如AJAX方式获取当前用户的SESSION,如果楼主的问题解决了,就可以通过SESSIONID获取SESSION了

mr.cui | 园豆:171 (初学一级) | 2012-06-09 10:46

有一种方案不知道可行性怎么样,就是SESSIONSTATE配置成SQLSERVER,那样可以直接从表中根据SESSION取数据反序列化

支持(0) 反对(0) mr.cui | 园豆:171 (初学一级) | 2012-06-09 11:04
0

进程方式是没办法获取的!这个与php有点不同咯。

跟着阿笨一起玩.NET | 园豆:5 (初学一级) | 2015-04-28 08:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册