使用memcache进行账号验证服务
适用环境是需要频繁进行账号和请求合法性验证的地方
大致思路:
1、登陆时,服务器端接收一个账号和密码,还可以再加上用户的ip等信息通过md5等加密算法计算出一个定长的字符串作为用来验证的token
2、根据用户账号/id md5出一个定长的字符串,用来作物memcache的key
3、把生成的key和token存入memcache,并设置有效期为2小时(具体根据需要,最大不超过30天)
4、当每次客户端请求时都会传递用户的id和步骤1计算出的token,与memcache中的数据进行对比,如果正确,value的有效期延长为设置的有效期时间
所解决的问题:
1、多处登陆,因为在不同的机器/时间/ip登陆后token都会发生变化,势必会导致另外一台机器上的用户下线
2、减少数据库的读取,降低服务器的压力
所需要完成的方法:
1、生成key,可以使用md5获取定长的字符串作为key
2、根据参数生成token,参数包括id,password,然后在服务端获取ip(如果可以获取的到),并使用timestamp进行加密
3、存储key/token,并设置有效期
4、数据验证,给出id和token,验证token是否合法
---------------------------------
added @2013-09-06 08:57
这里面还有一个要解决的问题就是登陆时的数据验证问题,我找到的有两种验证方法
1、比较简单的就是hash验证,可以多种加密方法同时使用,优点是简单方便
2、使用证书,优点是更安全
使用memcache进行账号验证服务的更多相关文章
- ##3.Keystone 验证服务--openstack
##3.Keystone 验证服务 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html #SQL上创建数据库并授权 #K ...
- openstack Keystone验证服务集群
#Keystone验证服务群集 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##.Keystone验证服务集群 ...
- .NET Core微服务之基于IdentityServer建立授权与验证服务
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.IdentityServer的预备知识 要学习IdentityServer,事先得了解一下基于Token的验证体系,这是一个庞大的主题 ...
- AWS 身份及验证服务(四)
IAM 概述 集中管理访问AWS资源的访问权限和用户身份认证 支持联合访问管理,支持LADP第三方服务 (Identity Provider) 是非区域相关的服务,全局有效 创建用户.组和角色以应用策 ...
- 一个基于POP3协议进行邮箱账号验证的类
最近老陈要针对企业邮箱做一些开发,以对接企业OA神马的,但企业邮箱唯独没有开放账号密码验证功能,很恼火!不得已,翻出早些年的Asp代码改编成了C#类,实现了一个C#下的通过POP3协议进行邮箱账号验证 ...
- sql server安装程序无法验证服务账户是什么原因
为了帮助网友解决“sql server安装程序无法验证服务”相关的问题,中国学网通过互联网对“sql server安装程序无法验证服务”相关的解决方案进行了整理,用户详细问题包括:能是尚未向所有要安装 ...
- DotNetOpenAuth Part 1 : Authorization 验证服务实现及关键源码解析
DotNetOpenAuth 是 .Net 环境下OAuth 开源实现框架.基于此,可以方便的实现 OAuth 验证(Authorization)服务.资源(Resource)服务.针对 DotNet ...
- 管理员技术(五): 配置文档的访问权限、 配置附加权限、绑定到LDAP验证服务、配置LDAP家目录漫游
一.配置文档的访问权限 问题: 本例要求将文件 /etc/fstab 拷贝为 /var/tmp/fstab,并调整文件 /var/tmp/fstab的权限,满足以下要求: 1> 此文件的拥有者 ...
- 已授予账号 "以服务方式登录"的权限
已授予账号.\Cliff "以服务方式登录"的权限 --------------------------------------------------- 进入服务管理器(Serv ...
随机推荐
- Oracle基础 程序包
一.程序包 程序包是一种数据库对象,它是对相关PLSQL类型.子程序.游标.异常.变量和常量的封装.程序包包含两部分内容: 1.程序包规范:可以声明类型.变量.常量.异常.游标和子程序. 2.程序包主 ...
- mkdir的参数-p的作用
mkdir -p /nfs 也就是加上-p参数,之前只知道是递归创建目录,于是就发问了,得到的答案是: -p, --parents no error if existing, ...
- spring 源码下载
github spring 源码 导入Spring源码方法 java世界中的三大构建工具:ant,maven,gradle gradle 简介
- Shiro学习小结
1. What is Shiro? Apache旗下一个开源的Java权限框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架 ...
- 调用获取学生信息的接口,保存到excel里面的小程序
# 2.http: // doc.nnzhp.cn / index.php?s = / 6 & page_id = 14# 调用获取学生信息的接口,保存到excel里面 import requ ...
- Android 使用SwipeBackLayout实现滑动返回上一级页面——实战来袭
我们知道.APP在设计上习惯性的把返回button放在屏幕的左上角,那么,在非常多时候(尤其是大屏幕手机),操作改返回button,就会有诸多不便了.为了更加方便实现"返回"功能. ...
- SQL:OUTER JOIN使用方法具体解释
SQL--JOIN使用方法 外联接. 外联接能够是左向外联接.右向外联接或完整外部联接. 在 FROM 子句中指定外联接时,能够由下列几组keyword中的一组指定: LEFT JOIN 或 LEF ...
- hdu3336解读KMP算法的next数组
查看原题 题意大致是:给你一个字符串算这里面全部前缀出现的次数和.比方字符串abab,a出现2次.ab出现2次,aba出现1次.abab出现1次.总计6次. 而且结果太大.要求对1007进行模运算. ...
- vim 命令行使用技巧
1. <Ctrl-U> <Ctrl-K> 删除光标到开头的输入 2. <Ctrl-W> 删除最近输入的单词 3. <Ctrl-H> 删除光标之前的一个字 ...
- Spring在注入bean异常时的替换
情形:需要把数据库1的连接池A注入到DAO中,但是如果数据库A的连接池实例化失败了整个项目也启动不了,这个时候希望用数据库2的连接池来替换. 这里没有想到什么好的解决方法,只是想到了工厂方法提供Bea ...