大家好
我有一個登入系統(Nodejs+MySQL),看著下面連結的教學做的
https://www.youtube.com/watch?v=1aXZQcG2Y6I&list=PL0EEIby1kQJtTVoh0Es2Xp4bNoHLjSOZQ&index=1
假如我開兩個網頁,然後分別進行登入
網頁(二)登入完之後,如果在網頁(一)的首頁重新整理,它就會變成登入的是Bob
參考圖(先登入Alice後再從另一個頁面登入Bob):
回到原本頁面重新整理後
有沒有甚麼方法,可以讓兩個網頁分別不會受影響?
謝謝!
這點你其實要先了解一件事。
所謂的SESSION是什麼,如何分別。
SESSION的值認真來說,都是存在你的伺服器上。
而大多數來說。session id用的方式就是存在cookie
然後我們再來談談 cookie ,原則上cookie是依附在域名下所產生的值。
並儲存在客戶的機器上。
也就是說,再同域名下,所拿到的都是同一個cookie設定。
所以,當你在同一個域名下,去做兩個不同的登入。一定會是後者資料蓋前者資料的。
畢竟它們是共用同一個設定值的。
那是否有解呢??其實有很多種方式的。
我們已經知道session id的值會是放在cookie上。
所以我們得先處理好如何區分不同的session id值
大多數以前比較簡單的方式是,跟隨token招。
也就是域名採用 http://www.abc.com/index.php?token=???????
用token的分式來處理分身及應用。
但這招則需要在連個連結中都要帶其值來對應。要不然就無法區分了。
至於安全性,理論上來說當然不是很安全。除非你針對token做一些處理。但這是另外一門學問了。
另外一招就是採用 瀏覽器的storage來處理了。你可以查一下storage。
現在同域名不同分身,大多會直接用它處理。
以上提供這幾項給你參考。當然了,其實還有非常多招。你可以網路上找找玩一下。
我推測你大概還不清楚 seasion 的目的 XD
你目前的狀況是正確的,大家都是這樣的
你的問題你只需要用不同瀏覽器,或是其中一個換成無痕,就可以測試了
session 或 cookie 這類暫存用的功能
本來就是為了要讓使用者不用
換頁還要重新登入
舉例吧
你希望每次開新分頁,都要重新登入 gmail 嗎
或是每次開新分頁都要重新登入 IG 嗎
沒有人會這樣設計的對吧
所以你在同一個階段,登入自己網站
當然不管開幾個分頁都是同一個人
一旦你換帳號登入,當然全部頁面都要換另一個人
如果你有需求像 fb 粉絲團
或 gmail 多帳號登入切換
那你就要再額外 code 能夠做帳號切換的功能和判斷
session跟cookies 類似,都是以瀏覽器header request和response的短期資料存放使用,出於安全考量,盡可能不存放敏感資料,如信用卡號,實名、身份証號,而是一組隨機產生的GUID或加密字串做token,取代明顯文字或可被逆算的chipher加密,只為了做驗證這個用戶是有登入過的
至於token代表什麼,你就存資料庫吧
假如我開兩個網頁,然後分別進行登入
你開的根本就是同一頁,路徑相同,開了兩頁,同一套程式在處理。你說的應該是前後台的功能。前台登入,叫會員,後台登入,叫管理者。網址路徑要不一樣,由不同的程式去處理,變數也要取不一樣。這個對初學者可能有點複雜。