麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > Redis > 正文

使用redis管理用戶登錄會話的方法

2020-03-17 12:33:41
字體:
來源:轉載
供稿:網友

登錄和cookie緩存

對于用來登錄的cookie,有兩種常見的方法可以將登錄信息存儲在cookie里面:一種是簽名(signed)cookie,另一種是令牌(token)cookie。

簽名cookie通常會存儲用戶名,可能還有用戶ID、用戶最后一次成功登陸的時間,以及網站覺得有用的其他任何信息。除了用戶的相關信息外,簽名cookie還包含一個簽名,服務器可以使用這個簽名來驗證發送的信息是否未經改動(比如將cookie中的登錄用戶名改成另一個客戶)。

令牌cookie會在cookie里面存儲一串隨機字節作為令牌,服務器可以根據令牌在數據庫中查找令牌的擁有者。下表展示了簽名cookie和令牌cookie的優點與缺點。

 

cookie類型 優點 缺點
簽名cookie 驗證cookie所需的一切信息都存儲在cookie里面。cookie可以包含額外的信息(additional information),并且對這些信息進行簽名也很容易 正確地處理簽名很難。很容易忘記對數據進行簽名,或者忘記驗證數據的簽名,從而造成安全漏洞
令牌cookie 添加信息非常容易。cookie的體積非常小,因此移動端和速度較慢的客戶端可以更快地發送請求 需要在服務器中存儲更多信息。如果使用的是關系數據庫,那么載入和存儲cookie的代價可能會更高

 

下面是用java寫的一個例子

import java.util.ArrayList;import java.util.Set;import redis.clients.jedis.Jedis;public class Login { public String checkToken(Jedis conn,String token){  return conn.hget("login:", token); } public void updateToken(Jedis conn,String token,String user,String item){  long time=System.currentTimeMillis()/1000;  conn.hset("login:", token, user);//維持令牌與用戶之間的映射  conn.zadd("recent:", time, token);//保存令牌最后一次出現的時間  if(item!=null){   conn.zadd("viewd:"+token, time, item);//根據這個令牌來設置該用戶在這個時間戳訪問的商品名字   conn.zremrangeByRank("viewd:"+token, 0, -26);//移除就的用戶記錄,只保留用戶瀏覽過的25個商品。   conn.zincrby("viewd:", -1, item);  } } public class CleanSessionsThread extends Thread{  private Jedis conn;  private int limit;  private boolean quit;  public CleanSessionsThread(int limit) {   // TODO Auto-generated constructor stub   this.conn=new Jedis("localhost");   conn.select(15);   this.limit=limit;  }  public void quit(){   quit=true;  }  @Override  public void run() {   // TODO Auto-generated method stub   while(!quit){    long size=conn.zcard("recent:");//依據登錄時間確定在線人數    if(size<=limit){     try {      Thread.sleep(1000);     } catch (InterruptedException e) {      // TODO Auto-generated catch block      e.printStackTrace();     }    }else{     long endIndex=Math.min(size-limit,100);     Set<String> tokensSet=conn.zrange("recent:", 0, endIndex-1);     String[] tokens=tokensSet.toArray(new String[tokensSet.size()]);     ArrayList<String> sessionKeys=new ArrayList<>();     for(String token:tokens){      sessionKeys.add("viewd:"+token);     }     conn.del(sessionKeys.toArray(new String[sessionKeys.size()]));     conn.hdel("login:", tokens);     conn.zrem("recent:", tokens);    }   }  } }}

以上這篇使用redis管理用戶登錄會話的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Redis頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩视频―中文字幕 | 成人在线免费观看小视频 | 老司机免费福利午夜入口ae58 | 精品国产91久久久久久浪潮蜜月 | 欧美色性| 久久久成人一区二区免费影院 | 黄视频在线网站 | 国产99一区二区 | 久久久久亚洲视频 | 欧美一区二区三区中文字幕 | 久久久一区二区三区精品 | 国产精选电影免费在线观看 | 中文字幕在线视频日本 | 国内成人自拍视频 | 91九色国产视频 | 国产一级二级在线播放 | 精品一区在线视频 | 国产精品资源手机在线播放 | 亚洲精品成人18久久久久 | 久久综合婷婷香五月 | 国产伦精品一区二区三区 | 精品一区在线视频 | 日韩精品一区二区三区中文 | 欧美精品免费一区二区三区 | 伦理三区 | 色视频一区二区 | 一区二区久久久久草草 | 久久影院在线观看 | 日韩电影一区二区 | 成人短视频在线观看 | 国内精品久久久久久2021浪潮 | 色播视频在线播放 | 九九热精品在线视频 | 精品视频一区二区三区四区 | 精品一区二区久久久久久按摩 | 精品一区二区免费视频视频 | 外国一级黄色片 | 亚洲电影在线播放 | 久久99亚洲精品 | 日本在线看片 | 久久久三级免费电影 |