移动终端与服务端维持会话方式
来源:互联网 发布:阿里云上海代理商 编辑:程序博客网 时间:2024/05/21 05:37
手机客户端与服务器端的通信,不同于浏览器与服务器端的通信。浏览器和服务器端的通信依靠session去维持一个会话, 当这一切搬到手机上仿佛一切都失效了。
1.在上一家公司的时候公司同事曾经问过我这个问题, 我当时想的解决办法是通过将sessionID附加到网址后面,或者放到hearder头中,维持会话。
2.或者干脆不维持会话,每次请求都通过签名认证,调用接口,拿数据。当然这样的效率肯定是最低的
3.到了新公司,看到google大牛推荐的一种方式。根据这种方式构建了一种类似于session的机制,一下主要是我的实现(有好的见解,欢迎喷~~):
1.用户表
mysql> desc auth_member;
+---------------------------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |
+---------------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(50) | YES | UNI | NULL | |
| password | varchar(50) | YES | | NULL | |
| realname | varchar(50) | YES | | NULL | |
| email | varchar(100) | YES | UNI | NULL | |
| registry_time | datetime | YES | | NULL | |
| registry_ip | varchar(50) | YES | | NULL | |
| last_login_time | datetime | YES | | NULL | |
| update_time | datetime | YES | | NULL | |
| last_password_update_time | datetime | YES | | NULL | |
| total_login_times | int(11) | YES | | NULL | |
| avatar | varchar(255) | YES | | NULL | |
| is_first_login | int(11) | YES | | NULL | |
| delete_flag | int(11) | YES | | NULL | |
+---------------------------+--------------+------+-----+---------+----------------+
16 rows in set (0.00 sec)
2.token表
mysql> desc auth_log_token;
+--------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| uid | int(11) | YES | | NULL | |
| token | varchar(50) | YES | | NULL | |
| create_time | datetime | YES | | NULL | |
| refresh_time | datetime | YES | | NULL | |
| valid_time | datetime | YES | | NULL | |
| is_valid | int(11) | YES | | NULL | |
+--------------+-------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
id 标识,uid用户Id,token类似于session的唯一串根据一定算法声称,create_time生成时间,refresh_time 刷新时间,valid_time失效时间,is_valid是否失效
运作:
1.用户登录: https://(请求) username+password通过签名认证, 获取token,默认token有效时间可以根据用户设置的记住密码时间,或者默认30min
2.用户通过接口获取数据:用户请求服务器接口需要携带token和username,通过判断token是否有效,token和传递的用户名是否匹配等,验证token合法性
3.每次验证token成功更新refresh-time字段,valid_time时间更新,增加token有效时间
4.如果要构造单点登录,用户每次登陆判断token表中uid记录是否存在,如果存在直接更新;如果构建多点登陆,用户每次登陆,直接在token表中插入新记录。用户退出,直接将is_valid字段设为1(即已经失效),valid_time 设置为当前时间
转:http://my.oschina.net/wanglihui/blog/150726
- 移动终端与服务端维持会话方式
- 移动终端数据传输方式
- Web会话状态的维持
- Web会话状态的维持
- Web会话状态的维持
- Web会话状态的维持
- script录制与回放终端会话
- centOS下录制与回放终端会话:
- 移动终端与云计算
- 记录Linux终端会话
- 终端模拟rtsp会话
- 终端会话管理工具tmux
- 移动智能终端与移动互联网的发展走向预估
- (ARM)移动处理器与移动互联网终端发展
- 移动终端数据传输的几种方式介绍
- 移动终端数据传输的几种方式介绍
- 移动终端数据传输的几种方式介绍
- 移动终端 Web版 密码控件实现方式
- linux scp 无密码复制文件和目录
- 蓝桥杯试题 网络寻路 (构图+深搜)
- 64位 centos 运行 android adb
- Openstack快照现状分析
- 安装hadoop
- 移动终端与服务端维持会话方式
- Java进击(三)容器类
- 前些天用到的SELinux命令
- JavaWeb(三)------servlet基础
- 解决android SDK更新不了问题
- android应用抓包
- iOS企业开发者计划介绍及使用方法
- $(addprefix PREFIX,NAMES…)
- GCC使用