鍍金池/ 問(wèn)答/人工智能  PHP  HTML/ PHP利用redis實(shí)現(xiàn)單點(diǎn)登入的疑問(wèn)

PHP利用redis實(shí)現(xiàn)單點(diǎn)登入的疑問(wèn)

我們都知道登入一般都是利用session來(lái)保存一個(gè)狀態(tài),通過(guò)這個(gè)狀態(tài)來(lái)判斷是否登入網(wǎng)站,而且不同的域名生成的PHPSESSID也不同。
疑問(wèn):如果我們利用redis實(shí)現(xiàn)session共享來(lái)做單點(diǎn)登入,比如我有A.com 和B.com兩個(gè)網(wǎng)站。那我在A網(wǎng)站登入時(shí)生成的PHPSESSID和在B網(wǎng)站上生成的PHPSESSID肯定是不同的。如果我在A網(wǎng)站上登入了把session保存在redis上,那我訪問(wèn)B站時(shí)怎么判斷已在A站登入過(guò)了,從而免登入B站呢。

回答
編輯回答
入她眼

你用redis來(lái)存session數(shù)據(jù)的話,讓多個(gè)域名的session_id一致就可以,可以參考session.cookie_domain設(shè)置
http://php.net/manual/zh/func...

2017年6月30日 19:19
編輯回答
熟稔

你說(shuō)的這句話,是有矛盾的:“疑問(wèn):如果我們利用redis實(shí)現(xiàn)session共享來(lái)做單點(diǎn)登入,比如我有A.com 和B.com兩個(gè)網(wǎng)站。那我在A網(wǎng)站登入時(shí)生成的PHPSESSID和在B網(wǎng)站上生成的PHPSESSID肯定是不同的?!?session共享是要保證多域名的redis 的key是唯一的,登入時(shí)就要判斷是否存在已經(jīng)生成且沒(méi)過(guò)期的session;至于session key的生成,你可以自定義,例如使用用戶id來(lái)生成 session key都是可以的。

2018年7月12日 21:15