單帳號登陸初探

                                                            單帳號登陸redis

前言:原本想使用單點登陸這個詞,後來發現,單點登陸普通是指在不一樣系統中,只登陸一次;數據庫

eg:樓主新人;加密

1、思路:使用一個能夠共用的存儲來儲存登陸信息,保證一對一的關係(這裏使用redis,沒有使用數據庫);token

2、實現:內存

    一、某帳戶第一次登陸時候,生成token,設置過時時間(通常能夠設置1個月),而後在redis中,設置2個key-value(一、token爲key,userId爲value;二、userId爲key,token爲value;若是須要前綴後綴的話,也加上);同時,客戶端儲存token;博客

    二、使用相關功能(須要登陸的)時候,帶上token(能夠放header中,也能夠加密進去);根據token能夠得到userId;登錄

    三、另外一個帳號登陸,生成token,照着步驟1,可是要把已經存在的key-value(就是1生成的)給替換掉;總結

    四、這個時候,1步驟產生的token,userId已經不存在;再使用相關功能時候,因爲userId不存在,因此須要再次登陸,即不能繼續操做,須要從3再操做;周而復始的,只能一我的(設備)使用帳號;單點登錄

3、缺點數據

    一、非實時性,不是第二個登陸,第一個馬上被擠下去(能夠經過推送完成?);

    二、須要維護2個key-value;

    三、使用redis,因爲在內存中,可能會發生意外狀況(忽然斷電啥的);

    四、這裏也能夠考慮儲存設備號,保證一個設備登陸(還沒有嘗試)。

    五、他人能夠經過獲取token來登陸(只能防一下不懂的人。。)。

4、總結

    這是我第一次寫博客,寫的很差,也只是忽然想到了什麼,感受不記錄下來很容易忘記。若是能幫到一些人,那是極好的。

    其餘漏洞和更好的方案請留言;很是感謝你們評論,也很開心和你們一塊兒討論。

相關文章
相關標籤/搜索