美文网首页
移动客户端与服务端Session小知识

移动客户端与服务端Session小知识

作者: Exia_L | 来源:发表于2017-09-04 17:01 被阅读131次

众所周知,做过Web开发的小伙伴可能知道,在浏览器向服务器发一个请求,服务器端会为当前的访问者创建一个session会话,随着浏览器的关闭而会话结束。但是移动客户端咋整呢(IOS/Android啥的)。鄙人研究了一番,发现IOS/Android用原生接口发请求最大滴特点是每一次建一个会话,这样登录功能也就基本废了。登录功能的意义是将用户身份验证成功的信息存储在session里,结果每一次请求一个新的session这可不OK啊。

那么如何保证客户端的登录时创建的session在后续的接口请求中都能够行之有效的为客户端提供会话的操作,比如用户信息实体的存放,用户权限功能菜单的存放啥的。首先来科普一个概念:Cookies,不懂的自己百度,还有一个比较流行的移动端开发概念access_token,做过微信开发的应该都懂,不懂自己百度。

浏览器的工作原理也是基于cookies,这也就能解释每一次为何清空cookie后网站需要重新登录。浏览器访问服务端时,服务端在响应信息里包含了cookie信息,这个cookie里就有sessionId,这个sessionId会被浏览器自己缓存在本地cookie里,后续访问该网站的一切请求时都会自动在HTTP请求头Header里带着cookie信息。因此,服务器通过cookie里的sessionId来判断当前访问者的身份,并且从会话集合里匹配当前sessionId所对应的会话对象。

再说说另外一个概念access_token令牌,这个是自己约定的,根据开发需要。比如有这样的一个场景:用户登录请求,用户登录时,会带着用户名name和密码pwd来访问登录接口。如果服务端确认该用户是合法的,那么咱们应该由服务端生成一个access_token,保存在服务端的session会话里,并且将这个access_token返回给客户端。

OK,到这里,客户端总共获取到了两个东西,包含有sessionId的cookie和access_token,有了这两个东西,客户端后续在请求服务端的任何一个接口时,需带着access_token和Cookie即可。服务端会通过cookie识别你属于哪个session,通过access_token判断你是否合法,此次登录是否过期(服务端说了算)。上代码:

//////////////////////////////////////////////////////////
//一.登录时创建会话且返回access_token到客户端
/////////////////////////////////////////////////////////

//access_token令牌作为登录状态标识
HttpServletRequest req = Mvcs.getReq();
HttpSession session = req.getSession(true);//创建会话
//uuid作为token
String access_token = UUID.randomUUID().toString();
session.setAttribute("access_token", access_token);
//out.print("access_token:"+access_token);


//////////////////////////////////////////////////////////
//二.后续的接口访问中服务端过滤链逻辑
/////////////////////////////////////////////////////////
HttpServletRequest request = Mvcs.getReq();
HttpSession httpSession = request.getSession(true);
String rat= request.getParameter("access_token");
String sat= (String)httpSession.getAttribute("access_token");
if(rat!= null && rat.equals(sat)) {
//如果相等,说明access_token是有效的.
    //放行。。。
}

备注:只要你在HTTP请求头里提交了形如:Cookie:JSESSIONID=16E11471753944CF4F68A9F665E9B97F 键值对,服务器会自动根据cookie里包含的sessionId去在服务端匹配属于这个id的session并提供服务。

相关文章

  • 移动客户端与服务端Session小知识

    众所周知,做过Web开发的小伙伴可能知道,在浏览器向服务器发一个请求,服务器端会为当前的访问者创建一个sessio...

  • 安全测试知识

    1 cookie 与 session Cookie保存在客户端,session保存在服务端。session是有...

  • session笔记

    session session和cookie区别 cookie采用客户端保持状态 Session采用服务端保持状态...

  • token,cookie,session

    Android客户端和服务端如何使用Token和Session Token ,Cookie和Session的区别-...

  • 登陆方式-Session

    Session 1 .客户端请求服务端,服务端会为这次请求开辟一块内存空间,这个对象就是session对象,存储结...

  • Session

    Session: 填补Http无状态协议的空白 保存在服务端内存中 存储客户端的访问状态 创建与销毁由服务端完成 ...

  • 登录鉴权

    一、登录鉴权的方式有以下几中 cookie/session cookie保存在客户端,session保存在服务端;...

  • Cookie、Session、Localstorage和Sess

    Cookie和Session 1.保持状态:Cookie保存在客户端,Session保存在服务端2.使用方式:(1...

  • cookie 和 session

    客户端向服务端第一次发送请求,服务端会产生一个session,用来保存客户信息。每个session会有对应的唯一s...

  • php面试常问的题目3

    1、SESSION 保存在服务器的哪里?2、服务端是如何获取客户端的cookie?3、如何实现SESSION共享,...

网友评论

      本文标题:移动客户端与服务端Session小知识

      本文链接:https://www.haomeiwen.com/subject/umvejxtx.html