zoukankan      html  css  js  c++  java
  • 跨域那些事(2)

    上一篇文章有些細節沒有講明白.

    比如我說redis做存儲化比較安全,那爲何我不用redis去存用戶登錄名呢,雖然cookie中存當前登錄名被改不會有什麼影響,但是這裏涉及到一些redis的使用.

    redis是一種key-value映射的高效存儲方式,從內存中讀取數據,速度非常quick.如果我能確定key的唯一性,我自然可以使用redis的set key value.但是當前用戶名存儲,我們該用什麼樣的key呢.current_username?如果用這個,所有人都使用這個key,大家會根據登錄先後順序去覆蓋current_username對應的鍵值.這樣根本就達不到我們的要求.

    同樣的token也是一樣,如果單純地用auth_token作爲鍵名,只要有人登錄過,其他人都可以從redis裏面讀取到,也就失去了auth的效果.

    這就是爲什麼多個系統之間要做單點登錄的原因,甚至單獨做個系統來做單點登錄的接入口.

    In a word,事情並沒有我們想的那麼簡單.我仔細思考後決定利用key的唯一確定,去規避共享redis data的弊端.

    username還是交給cookie去弄,在token的寫入的時候,用username+key的方式,如下:

    $this->MyRedis->set($user_name . '_auth_token', 'xxsdrewercdscerrtc', 3000);

    跨域之後讀取的時候:

    $auth_token = $this->MyRedis->get($_COOKIE['login_name'] . '_auth_token');

    loginout的時候redis在del這個key,保持唯一性.

    總結:使用任何技術一定要考慮周全,盲目使用任何都是沒有什麼卵用.

  • 相关阅读:
    mysql INNODB_TRX 事务表
    14.4.5 System Tablespace 系统表空间
    14.4.4 Redo Log Buffer
    14.4.3 Adaptive Hash Index 自适应hash index
    14.4.2 Change Buffer 延迟写
    14.4.1 Buffer Pool
    14.3 InnoDB Multi-Versioning InnoDB 多版本
    14.2 InnoDB and the ACID Model
    14.1.3 检查InnoDB 可用性:
    算法分类(写这个是为了让自己以后学算法的时候有针对性条理性)
  • 原文地址:https://www.cnblogs.com/freephp/p/4657196.html
Copyright © 2011-2022 走看看