码迷,mamicode.com
首页 > 其他好文 > 详细

session + redis 统一认证 登陆系统

时间:2017-07-27 15:55:20      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:接收   hashmap   ssi   原理   客户   机制   uid   说明   成功   

实现原理:

 

session机制的原理

1.用户请求登录,用户名和密码没有问题,登录成功之后,服务端生成一条记录,这个记录可以说明登录的用户是谁。

2.服务端把这条记录的ID发送给客户端,客户端收到这个ID之后,存在cookie里。

3.客户端每次发送请求,都会带着这个cookie。

4.服务端会验证一下这个cookie里的信息,如果能在服务端找到cookie里对应的信息,则身份验证通过,能够把数据返回给客户端。

 

如何用redis实现上述目的

    在服务端安装redis,redis是一种存储在内存中的数据库,以键值对的方式存储数据的。

    参看他人的案例:

  

private Jedis jedis = JedisUtil.getInstance().getJedis("127.0.0.1", 6379);//定义jedis对象,用来操作redis  
Map<String, String> resultMap = new HashMap<>();//定义一个HashMap,放入传回给客户端的数据和一个token  
Map<String, String> jedisMap = new HashMap<>();//定义一个HashMap,放入我们想存储的数据  
jedisMap.put("accountId", loginAccount.getId().toString());  
jedisMap.put("accountName", loginAccount.getName().toString());//把账户ID、name等我们需要的信息存储在map中  
  
String token = Base58Helper.compressedUUID();//定义一个token字符串,Base58Helper.compressedUUID是自定义的生成的是唯一的字符串的方法  
jedis.hmset(token, jedisMap);//向redis中存入键值对,键名:token;值:jedisMap。即把我们想要的数据以map形式存入redis,标记为token。  
jedis.expire(token, 6000);//定义token的失效时间  
  
resultMap.put("token", token);//把token放入到resultMap(resultMap可能还有其他客户端想要的数据,token只是其中一个)中,返回给客户端。
jedis.exists(token);//服务端判断redis中,是否存在token。

    客户端接收到登录之后需要的数据和token之后,每次再请求时,发送请求参数和token,服务端就可以根据token进行身份验证了。

     

 

session + redis 统一认证 登陆系统

标签:接收   hashmap   ssi   原理   客户   机制   uid   说明   成功   

原文地址:http://www.cnblogs.com/mesakiiyui/p/7244743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!