新聞中心
單點(diǎn)登錄(Single Sign On,簡(jiǎn)稱SSO)技術(shù)幫助用戶減少登錄網(wǎng)站的繁瑣過程,統(tǒng)一認(rèn)證機(jī)制,能夠減少資源的浪費(fèi),使用戶可以在不同的應(yīng)用系統(tǒng)之間的切換更加的便捷。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、工布江達(dá)網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、工布江達(dá)網(wǎng)絡(luò)營(yíng)銷、工布江達(dá)企業(yè)策劃、工布江達(dá)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供工布江達(dá)建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
現(xiàn)如今,SSO技術(shù)已經(jīng)廣泛應(yīng)用于企業(yè)級(jí)應(yīng)用系統(tǒng)中,但是多個(gè)系統(tǒng)之間的認(rèn)證機(jī)制存在跨域的問題,而傳統(tǒng)的SSO技術(shù)對(duì)于跨域支持并不是很好,因此,就帶來了跨域單點(diǎn)登錄問題。
跨域單點(diǎn)登錄問題的解決,可以采用基于Redis的解決方案,原理是通過Redis來實(shí)現(xiàn)多個(gè)域之間的單點(diǎn)登錄。
用戶登錄主域時(shí),會(huì)將登錄信息存儲(chǔ)到Redis中,并生成一個(gè)令牌(token),系統(tǒng)會(huì)將這個(gè)令牌返回給用戶。
當(dāng)用戶請(qǐng)求從域時(shí),從域也會(huì)從Redis中獲取到這個(gè)令牌并進(jìn)行驗(yàn)證,如果令牌有效,則表示用戶在其他域登錄過主域,從而實(shí)現(xiàn)跨域單點(diǎn)登錄。
基于Redis的解決方案,避免了使用傳統(tǒng)的cookie和session方式存儲(chǔ)登錄信息而引起的安全性問題,又避免了使用消息對(duì)列來實(shí)現(xiàn)跨域通信所帶來的性能問題,因此廣泛應(yīng)用于企業(yè)級(jí)應(yīng)用中。
下面我們來看一段Redis的相關(guān)代碼:
//存儲(chǔ)登錄信息到Redis
function setLoginInfo($loginname,$userid) {
$key = "LOGIN_INFO_$loginname"; //Redis鍵值
$data['userId'] = $userid;
$data['loginname'] = $loginname;
$data['timestamp'] = time();
$data['token'] = md5($userid.time());
$res = Redis::set($key, json_encode($data));
if($res && Redis::expire($key, 3600)) { //設(shè)置鍵值有效時(shí)間1小時(shí)
return true;
}
return false;
}
//獲取登錄信息
function checkLoginInfo($loginname) {
$key = "LOGIN_INFO_$loginname";
$res = Redis::get($key);
if(!$res) {
return false;
}
$data = json_decode($res, true);
$nowtime = time();
if($data['timestamp']+3600
return false;
}
return $data;
}
以上代碼用于將用戶登錄信息存儲(chǔ)到Redis中,包括用戶ID、用戶名、時(shí)間戳、令牌等數(shù)據(jù),接下來通過checkLoginInfo()方法驗(yàn)證令牌和時(shí)間戳,以實(shí)現(xiàn)跨域單點(diǎn)登錄的功能。
通過基于Redis的方式,不僅能夠簡(jiǎn)單的實(shí)現(xiàn)跨域單點(diǎn)登錄,而且還可以有效降低系統(tǒng)開銷,提高系統(tǒng)性能。
成都網(wǎng)站建設(shè)選創(chuàng)新互聯(lián)(?:028-86922220),專業(yè)從事成都網(wǎng)站制作設(shè)計(jì),高端小程序APP定制開發(fā),成都網(wǎng)絡(luò)營(yíng)銷推廣等一站式服務(wù)。
新聞標(biāo)題:基于Redis解決跨域單點(diǎn)登錄問題(redis跨域單點(diǎn)登錄)
本文網(wǎng)址:http://fisionsoft.com.cn/article/djphico.html


咨詢
建站咨詢
