app 与服务器交互 token

Token是什么?php

Token是服务端生成的一串字符串,以做客户端进行请求的一个令牌,当第一次登陆后,服务器生成一个Token便将此Token返回给客户端,之后客户端只需带上这个Token前来请求数据便可,无需再次带上用户名和密码。程序员

一.产生缘由

app 应用须要访问服务器,此过程当中涉及到身份认证和权限控制的问题,如何搭建 app 和服务器之间信任的桥梁?数组

咱们都知道,session、cookie 是做为浏览器里面的用户和服务器之间认证的一个方式,而app 和服务器之间的交流也是使用的 http 请求,很明显它们遇到的问题是差很少的,可是由于 app 和浏览器又不彻底同样(浏览器能够存放 cookie),因此咱们能够借鉴浏览器和服务器的思想来解决 app 和服务器端的浏览器

cookie、session 的实现方式:
cookie 的实现方式是浏览器自己支持服务器端向浏览器写入键值对数据,固然客户端能够禁止服务器向客户端写入 cookie。
session 的实现方式是根据客户端的请求来找出当前客户端在服务器端的存放信息,有两种实现方式:
1.使用 cookie 写入 jsessionid=xxx
2.使用 url 重写(至关于在 url 后面加入 jsessionid=xxx)安全

不管使用哪一种实现方式,最后均可以根据当前的客户端请求来肯定当前请求的 request 在当前服务器中对应的 session,因此才会有 HttpSession session = request.getSession(); 由于session的肯定必须从 request 里面拿到它的 jsessionid 才能取到对应的 session。服务器

经过对浏览器和服务器交互的实现方式咱们知道了要记录当前用户的信息咱们须要在浏览器和服务器之间进行交互时传递一个 jsessionid 来标记当前用户,因而咱们也能够经过一样的方式来记录app和服务器之间的交互,也就是 app 用户在登陆以后咱们都会给它一个 token 字符串来惟一标识当前用户,这样当下次这我的来的时候咱们就能够根据 token 来取出当前用户的数据信息(用户我的信息、权限...),并且咱们能够经过设定 token 的实效时间来控制用户的在线时间cookie

二.实现方式

经过上面的分析咱们知道了,咱们只须要为每个访问用户记录下来一个惟一的 token 便可(不可重复),以后咱们就能够根据用户的 token来实现 app 端和服务器端之间的相对安全的交互了。session

使用 token 是为了信息安全,咱们能够根据设置 token 的失效时间来控制用户是否是能够对服务器进行访问,并且能够控制指定用户的访问保证用户数据的安全性。app

3、知识延伸

php写cookie是在浏览器请求时经过HTTP headers传给浏览器的;
浏览器接收到以后在内部处理在浏览器所在地创建cookie;
js写cookie应该就是直接操做本地的cookie文件了;网站

相关问题
php网站的session在服务器端是如何给客户端分配sessionid的
当用户浏览页面触发页面的session 而且在 session 数组里面 赋值 这个session文件在服务器是存放在 php.ini配置文件制定的位置吗?
对于不一样的来访用户 对 session文件的寻找(根据sessionid的匹配) 这些 工做是 php 的session机制实现的吗?php程序员须要 了解这方面的细节吗?

回答
在PHP.INI里面有一项session.save_path,就是设置session保存位置的。
session是经过cookie来实现的,当浏览器访问一个页面时,php发如今cookie里面没有sessionid这个值,就会产生一个sessionid出来,同时对应一个服务器里面的session文件。而后经过cookie传给浏览器(经过cookie),下次浏览器再访问页面的时候,就会把这个sessionid给带上(也是cookie),而后php经过这个cookie找到对应的session文件,读取session的值。也就是说若是用户关了cookie那session就用不了了。 以上就是session的原理。

sessionid做为用户的状态判断 在用户每次请求页面时 这个id会随着 http 请求的头描述 发送 !
在php程序里面 是只须要 开启 session 而后在 session 全局数组 里面 赋值 就能够了?
存储的位置 是由 php 来处理?
还有每次传过来的sessionid 提供给 php 程序 让 他 去寻找 对应此 id 的session文件 将里面的数据读到 session 数组里面(依次来实现 不一样的 用户有 不一样的 数据)?

追答:
这些过程你不用管,你只要知道,对于一个用户,在session的有效时间内,你设置了$_SESSION['abc'] = 6;而后在其余页面读取这个$_SESSION['abc']就会获得6,中间怎么处理sessionid什么的,php都给你作好了。
你就把它想成一个超级全局变量那样直接使用好了。

参考资料:
app 与服务器交互 token
Android客户端与服务器交互中的token

相关文章
相关标签/搜索