久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

使用redis管理用戶登錄會(huì)話的方法

登錄和cookie緩存

江門ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

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

簽名cookie通常會(huì)存儲(chǔ)用戶名,可能還有用戶ID、用戶最后一次成功登陸的時(shí)間,以及網(wǎng)站覺得有用的其他任何信息。除了用戶的相關(guān)信息外,簽名cookie還包含一個(gè)簽名,服務(wù)器可以使用這個(gè)簽名來驗(yàn)證發(fā)送的信息是否未經(jīng)改動(dòng)(比如將cookie中的登錄用戶名改成另一個(gè)客戶)。

令牌cookie會(huì)在cookie里面存儲(chǔ)一串隨機(jī)字節(jié)作為令牌,服務(wù)器可以根據(jù)令牌在數(shù)據(jù)庫中查找令牌的擁有者。下表展示了簽名cookie和令牌cookie的優(yōu)點(diǎn)與缺點(diǎn)。

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

下面是用java寫的一個(gè)例子

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);//保存令牌最后一次出現(xiàn)的時(shí)間
  if(item!=null){
   conn.zadd("viewd:"+token, time, item);//根據(jù)這個(gè)令牌來設(shè)置該用戶在這個(gè)時(shí)間戳訪問的商品名字
   conn.zremrangeByRank("viewd:"+token, 0, -26);//移除就的用戶記錄,只保留用戶瀏覽過的25個(gè)商品。
   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:");//依據(jù)登錄時(shí)間確定在線人數(shù)
    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管理用戶登錄會(huì)話的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持創(chuàng)新互聯(lián)。

文章名稱:使用redis管理用戶登錄會(huì)話的方法
當(dāng)前鏈接:http://sd-ha.com/article16/gcjjgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)微信小程序、虛擬主機(jī)品牌網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管