首页 新闻 会员 周边

SESSION 问题

0
悬赏园豆:80 [已解决问题] 解决于 2017-06-06 10:36

用mvc 写的一个接口 每个接口都会验证登录信息存在session里,别人调用的时候,先去登录,在调用别的接口但是session一直为空 ,谁知道什么原因啊

墨笔淡红尘的主页 墨笔淡红尘 | 初学一级 | 园豆:13
提问于:2017-06-05 15:52
< >
分享
最佳答案
0

你写的接口 别人用程序调用,怎么会有session呢。

接口调用和浏览器调用不一样的。因为你要维护一个token,sign等等。是不适合用session的。

收获园豆:20
Emrys5 | 菜鸟二级 |园豆:223 | 2017-06-05 15:59

因为有各个不同的平台登录,我要获取平台的一个基本信息

墨笔淡红尘 | 园豆:13 (初学一级) | 2017-06-05 16:29

@墨笔淡红尘: 这个让平台提供给你登录平台的信息啊,如果是各个平台的话就更不应该用sesion了。

session是适合用在web端,如果是多平台开发的话,你应该给各个平台一个统一的一个格式,比如每个平台调用接口时给你传个token,然后你根据token判断是哪个用户。

登录的时候根据用户名和密码返回一个token给各个平台,然后每次访问带着这个token,就类似session的原理

Emrys5 | 园豆:223 (菜鸟二级) | 2017-06-05 16:31

@Emrys5: 那每次同一个平台token生成的 不都一样了吗,怎么给过期时间啊

墨笔淡红尘 | 园豆:13 (初学一级) | 2017-06-05 16:39

@墨笔淡红尘: 一样怕什么,你的每个平台调用接口的时候数据要验证加密的,所以一样也无所谓了,过期时间在接口那设置就可以了,用那个滑动过期时间就好了。每次访问的时候把过期时间重置一下,等过了过期时间在访问,就返回未登录,让客户重新登录

Emrys5 | 园豆:223 (菜鸟二级) | 2017-06-05 16:42

@Emrys5:滑动过期时间 是cache ,cookie才有的吗,生成的怎么 设置啊

墨笔淡红尘 | 园豆:13 (初学一级) | 2017-06-05 16:53
其他回答(5)
0

条件不足.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-06-05 15:58
0

你先要确定是客户端为空还是服务端为空。

服务端是.net来管理的,那么就是你没保存。客户端如果是某些未管理的,需要客户端自己管理。

收获园豆:15
花飘水流兮 | 园豆:13560 (专家六级) | 2017-06-05 16:00

登录之后就存在session里了,然后控制器上打上了特性标签,但是获取的时候就为空

支持(0) 反对(0) 墨笔淡红尘 | 园豆:13 (初学一级) | 2017-06-05 16:30
0

调用方 是哪种很关键

SESSION这种识别会话的机制,只适用于调用方是WEB的情况,比如浏览器来调你的接口,或者WebRequest、HttpClient之类也行。也就是说:你的接口所在的应用程序和调用方应用程序之间通讯是走http协议才行。

 

 

 

 

收获园豆:15
西漠以西 | 园豆:1675 (小虾三级) | 2017-06-05 17:27

调用方是WebRequest这种方式调的

支持(0) 反对(0) 墨笔淡红尘 | 园豆:13 (初学一级) | 2017-06-05 17:42

@墨笔淡红尘: 那就调试一个调用方,看请求发出时,有没有带上sessionid这个cookie.

支持(0) 反对(0) 西漠以西 | 园豆:1675 (小虾三级) | 2017-06-05 17:56

@墨笔淡红尘: 百度一下 CookieContainer 

支持(0) 反对(0) 西漠以西 | 园豆:1675 (小虾三级) | 2017-06-05 17:59
0

服务端请求每次都是不同的会话,第一次调你登录接口进行登录,尽管你存进了session,但下一个请求过来又是一个新的会话,等于没登录,这种情况请参考微信等开放接口的授权模式

收获园豆:15
until-u | 园豆:225 (菜鸟二级) | 2017-06-05 19:42
0

别人的网站或者前端js直接对接您的api接口,是不会在第二次调用接口时候获取到第一次存储的session的,这种情况应该是第一次调用你接口的时候给前端返回一个token,然后每次调用您接口都让对方把token传递给您,用token来从当会话匹配的条件,然后您后台对token验证,过期,是否符合规范等。

收获园豆:15
神牛003 | 园豆:513 (小虾三级) | 2017-06-06 09:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册