设为首页 收藏本站
查看: 319|回复: 0

[经验分享] 通过session校验登陆权限,浏览器和tomcat通信过程分析

[复制链接]

尚未签到

发表于 2017-2-10 07:39:37 | 显示全部楼层 |阅读模式
 
相信大家在写服务端代码的时候都遇到过登陆权限校验的问题:没登陆的时候没法操作某些命令。
 
通用的解决方案就是通过session来控制。可大多数人对session一知半解,对于session在客服端与服务器端交互过程中的变化更是不明所以。下面就通过实例(chrome浏览器、tomcat服务器)来解析:客服端和服务器交互过程中session的变化,以及登陆权限校验。
 
第一部分:客服端和服务器交互过程中session的变化(注意 Request Headers  Response Headers
 
1.浏览器客服端第一次请求tomcat服务器端,没有带sessionid请求到了服务器,服务器返回一个sessionid给浏览器客服端
 
Remote Address:127.0.0.1:9922
Request URL:http://127.0.0.1:9922/saasapi/saasapi
Request Method:POST
Status Code:200 OK
 
Request Headers
view source
Accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Content-Length:90
Content-Type:text/plain;charset=UTF-8
Host:127.0.0.1:9922
Origin:chrome-extension://fhjcajmcbmldlhcimfajhfbgofnpcjmb
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36
 
Response Headers
view source
Content-Type:application/json;charset=UTF-8
Date:Wed, 06 May 2015 02:53:24 GMT
Server:Apache-Coyote/1.1
Set-Cookie:JSESSIONID=72FAE585F7AE0642206BE0500317E4F4; Path=/saasapi/; HttpOnly 
Transfer-Encoding:chunked
 
2.浏览器再次请求服务器端,请求的时候带上之前服务器返回的sessionid,服务器端不再返回sessionid
 
Remote Address:127.0.0.1:9922
Request URL:http://127.0.0.1:9922/saasapi/saasapi
Request Method:POST
Status Code:200 OK
 
Request Headers
view source
Accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Content-Length:90
Content-Type:text/plain;charset=UTF-8
Cookie:JSESSIONID=72FAE585F7AE0642206BE0500317E4F4
Host:127.0.0.1:9922
Origin:chrome-extension://fhjcajmcbmldlhcimfajhfbgofnpcjmb
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36
 
Response Headers
view source
Content-Type:application/json;charset=UTF-8
Date:Wed, 06 May 2015 02:56:21 GMT
Server:Apache-Coyote/1.1 
Transfer-Encoding:chunked
 
好,通过上面的2个步骤,就应该清楚的知道session在客服端与服务器端的变化了。既然知道session的变化了,就可以通过它,就想校验了。可校验的过程是怎样的呢?
 
第二部分:通过session进行登录权限校验
 
1.第一次请求,没有带sessionidHttpServletRequest没有session数据。
 
1)如果是登陆操作(不做用户id等信息校验):此时服务器自己生成了session,服务器自动把sessionsessionid返回给了客服端。进行登录操作,并需要手动把用户id等信息写入session中。
2)如果是非登陆操作(做用户id等信息校验):因为没有sessionid传过来,直接返回错误。此时服务器端仍然自己生成了session,并自动把sessionid返回给了客服端。
 
 
2.第二次请求,带上了sessionid。通过sessionid读取session中的用户id等信息。
1)如果是登陆操作(不做用户id等信息校验):进行登录操作,并把用户id等信息写入session中。
2)如果是非登陆操作(做用户id等信息校验):
如果此sessionid中能读到用户id等信息,说明已经登录过,通过验证,进行业务操作。
 
如果没有得到用户id相关信息,说明即使带上了sessionid,可没有进行过登录,属于非法操作,返回错误。
 
 
ok,讲解完毕。
 
 
这篇文章发了4次才发出来,期间账号被锁定3次。原因就是标题中包含服务器等等词汇,被列为了敏感词,然后账号就被锁了,被封之前也没任何提示!有敏感词点发布的时候你提醒呀,你别等发布之后锁账号删文章呀!
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-339894-1-1.html 上篇帖子: struts2框架发布到tomcat正常,发布weblogic 11的时候java.lang.ClassNotFoundException异常 下篇帖子: 详细介绍在tomcat中配置数据源以及数据源的原理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表