手机客户端和服务器端通信

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

手机客户端与服务器端的通信,不同于浏览器与服务器端的通信。浏览器和服务器端的通信依靠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 设置为当前时间   

转载于:https://my.oschina.net/wanglihui/blog/150726

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下boot文件是什么文件,Boot.ini是什么文件?Boot.ini文件在哪里

Boot.ini 文件是系统启动引导程序文件,装多系统或者重装系统的时候会用到它。因此,由于系统启动而造成的问题也不在少数,那Boot.ini是什么文件呢?Boot.ini文件在哪里?下面就跟小编一起去了解一下吧!步骤如下…

Kubeflow使用Kubernetes进行机器学习GPU分布式训练

Kubeflow使用Kubernetes进行机器学习 Kubeflow是Google推出的基于kubernetes环境下的机器学习组件,通过Kubeflow可以实现对TFJob等资源类型定义,可以像部署应用一样完成在TFJob分布式训练模型的过程。最初的设计是将Kubernetes和Tensorflow结合实现对Te…

Net操作配置文件(Web.config|App.config)通用类

一、Net操作web.config通用类(代码如下): using System;using System.Configuration;using System.Web;using System.Web.Configuration;/// ConfigurationOperator 的摘要说明public class ConfigurationOperator : IDisposable{private Con…

hibernate 程序运行时的错误,及解决办法(不定期更新)

这个错误是因为&#xff1a;没有配置hibernate.cfg.xml中的最后一项 <mapping resource"org/hibernate/first/model/Student.hbm.xml"/>这个错误是因为&#xff1a;在配置hibernate缓存的时候出的错&#xff0c;我就把我这个缓存代码删除掉了。代码如下<pro…

嵌入式linux设计师,make在linux——《嵌入式linux设计与应用》

程序模块的内部关系决定了源程序编译和链接的顺序。通过建立makefile可以描述模块间的 相互依赖关系。make命令从中读取这些信息&#xff0c;然后根据这些信息对程序进行管理和维护。在makefile 里主要提供的是有关目的文件与依靠文件之间的关系&#xff0c;还指明了用什么命令…

kubernetes集群使用GPU及安装kubeflow1.0.RC操作步骤

kubernetes集群使用GPU及安装kubeflow1.0.RC操作步骤 Kubeflow使用场景 希望训练tensorflow模型且可以使用模型接口发布应用服务在k8s环境中(eg.local,prem,cloud) 希望使用Jupyter notebooks来调试代码&#xff0c;多用户的notebook server 在训练的Job中&#xff0c;需要对…

T-Sql备份还原数据库

代码如下&#xff1a; -- 备份数据库BACKUP DATABASE 数据库名称 TO DISK 物理存储位置 WITH FORMAT,CHECKSUM -- 还原数据库alter database 数据库名称 set offline with rollback immediate -- 设置数据库脱机RESTORE FILELISTONLY From disk 待还原文件地址 --查询待…

PHP拦截器的使用(转)

PHP有如下几个拦截器&#xff1a; 1、__get($property)功能&#xff1a;访问未定义的属性是被调用2、__set($property, $value)功能&#xff1a;给未定义的属性设置值时被调用3、__isset($property)功能&#xff1a;对未定义的属性调用isset()时被调用4、__unset($property)功能…

linux线程负载,linux 排查cpu负载过高异常(转载)

问&#xff1a;如何定位是哪个服务进程导致CPU过载&#xff0c;哪个线程导致CPU过载&#xff0c;哪段代码导致CPU过载&#xff1f;步骤一、找到最耗CPU的进程工具&#xff1a;top方法&#xff1a;执行top -c &#xff0c;显示进程运行信息列表键入P (大写p)&#xff0c;进程按照…

Net操作Excel(终极方法NPOI)

前言 Asp.net/C#操作Excel已经是老生长谈的事情了&#xff0c;可下面我说的这个NPOI操作Excel&#xff0c;应该是最好的方案了&#xff0c;没有之一&#xff0c;使用NPOI能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件&#xff0c;支持的文件格式包括xl…

WIN10自带远程桌面实现多用户登录

一台主机当两台用&#xff0c;利用WIN10自带远程桌面实现多用户登录 2020-04-27 10:51:24 54点赞 311收藏 35评论 先来说说家里电脑和网络的基本情况。 新房装修时就考虑到家庭多媒体和自己变态的各种网络需求&#xff0c;所以全屋用企业级的网络设备组成了千兆网&#xff0…

PingingLab传世经典系列《CCNA完全配置宝典》-2.7 EIGRP基本配置

2.7 EIGRP基本配置实验目的&#xff1a;1、掌握EIGRP的基本配置。2&#xff0e;掌握EIGRP的邻居表、拓扑表、路由表。3&#xff0e;掌握EIGRP的无类特性。实验拓扑&#xff1a;实验步骤&#xff1a;1、依据图中拓扑配置各设备的IP地址&#xff0c;并保证直连连通性;在R1上做如下…

linux通过ip计算广播地址,子网掩码、网络地址、广播地址的计算

例如 192.168.1.53/27 如何计算出它的子网掩码、网络地址、广播地址、可用的主机数和最大可容纳主机数、可用的IP地址。子网掩码和主机数&#xff1a;192.168.1.53/27为例讲解&#xff0c;这就是平时说的&#xff23;类IP地址&#xff0c;平时大家用的是192.168.0.*或192.168.1…

KubeFlow安装指南

【摘要】 Kubeflow是Google推出的基于kubernetes环境下的机器学习组件&#xff0c;通过Kubeflow可以实现对TFJob等资源类型定义&#xff0c;可以像部署应用一样完成在TFJob分布式训练模型的过程。 组件 http://pachyderm.io/ http://www.argoproj.io/ Kubeflow使用场景 希望…

c#字符相似度对比通用类

本类适用于比较2个字符的相似度&#xff0c;代码如下&#xff1a; View Code using System;using System.Collections.Generic;using System.Text;public class StringCompute{#region 私有变量/// <summary>/// 字符串1/// </summary>private char[] _ArrChar1;/…

linux 日记函数,每日记一些php函数,jQuery函数和linux命令(一)

每天记一些php函数&#xff0c;jQuery函数和linux命令(一)简介&#xff1a;学习完了php和jQuery之后&#xff0c;对函数的记忆不到位&#xff0c;导致很多函数没记住&#xff0c;所以为了促进自己的记忆&#xff0c;每天花一点时间来写这个博客。时间&#xff1a;2016-12-18 …

蒋家骏_百度百科

蒋家骏_百度百科蒋家骏

基于Kubernetes的Spark部署完全指南

基于Kubernetes的Spark部署完全指南 【编者的话】本文是在Kubernets上搭建Spark集群的操作指南&#xff0c;同时提供了Spark测试任务及相关的测试数据&#xff0c;通过阅读本文&#xff0c;你可以实践从制作Spark镜像、搭建Spark容器集群&#xff0c;到在集群上运行测试任务的…

javascript数字格式化通用类——accounting.js使用

简介 accounting.js 是一个非常小的JavaScript方法库用于对数字&#xff0c;金额和货币进行格式化。并提供可选的Excel风格列渲染。它没有依赖任何JS框架。货币符号等可以按需求进行定制。 代码内容及下载地址 accounting.js代码如下&#xff1a; View Code /*!* accounting…

linux清除cpu,解决kswapd0 CPU占用率高的问题-清除病毒

连接服务器时发现cpu使用率100%&#xff0c;使用top命令查看是kswapd0进程占用cpu极高百度下后知道kswapd0进程的作用&#xff1a;它是虚拟内存管理中&#xff0c;负责换页的&#xff0c;操作系统每过一定时间就会唤醒kswapd &#xff0c;看看内存是否紧张&#xff0c;如果不紧…