登錄之后信轿,在其他頁面怎么判斷是否已經(jīng)登錄?

大家好残吩,我是IT修真院深圳分院第04期學員财忽,一枚正直善良的web程序員。

今天給大家分享一下泣侮,修真院官網(wǎng) js任務中可能會使用到的知識點:

登錄之后即彪,在其他頁面怎么判斷是否已經(jīng)登錄?


1.背景介紹

登錄功能活尊,是前端經(jīng)常要完成的需求之一隶校。但是如何進行登錄判斷?


2.知識剖析

傳統(tǒng)的Cookie-session驗證

Cookie認證機制就是為一次請求認證在服務端創(chuàng)建一個Session對象蛹锰,同時在客戶端的瀏覽器端創(chuàng)建了一個Cookie對象深胳; 通過客戶端帶上來Cookie對象來與服務器端的session對象匹配來實現(xiàn)狀態(tài)管理的。默認的铜犬,當我們關閉瀏覽器的時候舞终,cookie會被刪除。 但可以通過修改cookie 的expire time使cookie在一定時間內(nèi)有效癣猾。

所以敛劝,在其它頁面保持登錄,可以在登錄后往本地cookie中存儲一個關鍵字段(存儲用戶信息),如:名字纷宇、值夸盟、過期時間、路徑和域像捶。 在路由變化的時候上陕,或者在頁面跳轉的時候,檢測是該字段值是否正確作岖,不正確則跳轉登錄頁唆垃;點擊注銷可以執(zhí)行刪除。

token的驗證

token的意思是“令牌”痘儡,是用戶身份的驗證方式辕万,最簡單的token組成:uid(用戶唯一的身份標識)、time(當前時間的時間戳)、sign(簽名)渐尿, 由token的前幾位+鹽以哈希算法壓縮成一定長的十六進制字符串醉途,可以防止惡意第三方拼接token請求服務器)。還可以把不變的參數(shù)也放進token砖茸,避免多次查庫隘擎。


3.常見問題

cookie與session的區(qū)別

1、cookie數(shù)據(jù)存放在客戶端上凉夯,session數(shù)據(jù)放在服務器上货葬。

2、cookie不是很安全劲够,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙考慮到安全應當使用session震桶。

3、session會在一定時間內(nèi)保存在服務器上征绎。當訪問增多蹲姐,會比較占用你服務器的性能考慮到減輕服務器性能方面,應當使用COOKIE人柿。

4柴墩、單個cookie保存的數(shù)據(jù)不能超過4K。

5凫岖、所以個人建議:

將登陸信息等重要信息存放為SESSION

其他信息如果需要保留江咳,可以放在COOKIE中

cookie保存格式和參數(shù)說明

//設置Cookie

/*在cookie的名或值中不能使用分號(;)、逗號(,)隘截、等號(=)以及空格扎阶。在cookie

的名中做到這點很容易,但要保存的值是不確定的婶芭。如何來存儲這些值呢?方法是用

encodeURI()函數(shù)進行編碼着饥,它能將一些特殊符號使用十六進制表示犀农,例如空格將會編碼

為“20%”,從而可以存儲于cookie值中宰掉,而且使用此種方案還可以避免中文亂碼的出現(xiàn)呵哨。

在獲取cookie時可以通過decodeURI()方法對cookie進行解碼。

Cookie的保存格式為:"name=value; expires=evalue; path=pvalue;"每個屬性之間通過:'分號+空格'(; )隔開;

參數(shù)值的意思:

name:表示要存入對象的名稱轨奄,唯一必須設置(通常使用:user@domain格式命名孟害,user為本地用戶,domain為所訪問網(wǎng)站的域名)挪拟。value:表示要存入的值挨务。

expires:該對象的有效時間(可選)(默認為當前瀏覽器會話有用,關閉瀏覽器就消失);

path:指定該Cookie作用范圍(可選)(即:在那些網(wǎng)頁上可用);

domain:設置web服務器的Cookie共享域(可選)(如:test*.com)表示域名為test*.com

的服務器共享該Cookie

secure:設置Cookie的傳輸過程是否加密(可選)(一般為SSH加密)*/


4.解決方案

在前端瀏覽器里經(jīng)常使用Cookie-session驗證谎柄,那么如何進行使用這種驗證丁侄?


設置cookie

5.編碼實戰(zhàn)


6.擴展思考

SESSION與TOKEN的區(qū)別session和token并不矛盾,作為身份認證 token安全性比session好朝巫,因為每個請求都有簽名還能防止監(jiān)聽以及重放攻擊鸿摇,而session就必須靠鏈路層來保障通訊安全了。 如上所說,如果你需要實現(xiàn)有狀態(tài)的會話竟痰,仍然可以增加session來在服務器端保存一些狀態(tài)拍棕。App通常用restful api跟server打交道。Rest是stateless的筷黔,也就是app不需要像瀏覽器那樣用cookie來保存session,因此用session/token來標示自己就夠了, session/state由api server的邏輯處理变逃。 如果你的后端不是stateless的rest api, 那么你可能需要在app里保存session.可以在app里嵌入webkit,用一個隱藏的browser來管理cookie session.

Session 是一種HTTP存儲機制必逆,目的是為無狀態(tài)的HTTP提供的持久機制。所謂Session認證只是簡單的把User信息存儲到Session 里揽乱,因為SID 的不可預測性名眉,暫且認為是安全的。 這是一種認證手段凰棉。而Token损拢,如果指的是Token或類似的機制的話,提供的是認證和授權撒犀,認證是針對用戶福压,授權是針對App。其目的是讓某App有權利訪問某用戶的信息或舞。 這里的 Token是唯一的荆姆。不可以轉移到其它App上,也不可以轉到其它用戶上映凳。轉過來說Session只提供一種簡單的認證胆筒,即有此 SID,即認為有此User的全部權利诈豌。 是需要嚴格保密的仆救,這個數(shù)據(jù)應該只保存在站方,不應該共享給其它網(wǎng)站或者第三方App矫渔。 所以簡單來說彤蔽,如果你的用戶數(shù)據(jù)可能需要和第三方共享,或者允許第三方調(diào)用 API 接口庙洼,用Token顿痪。如果永遠只是自己的網(wǎng)站镊辕,自己的 App,用什么就無所謂了员魏。


7.參考文獻

參考一:Cookie/Session機制詳解

參考二:js創(chuàng)建cookie js設置cookie過期時間

參考三:cookie丑蛤、session與token


8.更多討論

1.和服務端seesion對接的數(shù)據(jù)一定要存儲在Cookie里嗎?

一般是存儲在Cookie里撕阎。雖然說瀏覽器的一個Cookie一般只有4KB,而現(xiàn)代瀏覽器localstorage和seesionstorge的存儲量更大受裹,但是Cookie可以靈活設置過期時間,而這一點localstorage和seesionstorge是做不到的虏束。

2.token通常用在什么地方棉饶?

token通常是用在跨平臺的項目,有移動端镇匀,PC端的項目照藻。因為IOS和安卓對Cookie的處理方法是不同,因此用token就可以方便各平臺使用汗侵。

3.如何手動取消登陸狀態(tài)幸缕?

1.手動打開瀏覽器cookie的存放位置,點擊清除cookie晰韵,那么你的登陸狀態(tài)就取消了

2.一般社交发乔,購物網(wǎng)站還有退出按鈕。它的原理也是去除cookie雪猪。



登錄之后栏尚,在其他頁面怎么判斷是否已經(jīng)登錄?

感謝大家觀看只恨!

今天的分享就到這里啦译仗,歡迎大家點贊、轉發(fā)官觅、留言纵菌、拍磚!

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市休涤,隨后出現(xiàn)的幾起案子产艾,更是在濱河造成了極大的恐慌,老刑警劉巖滑绒,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異隘膘,居然都是意外死亡疑故,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門弯菊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纵势,“玉大人,你說我怎么就攤上這事∏仗” “怎么了软舌?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵,是天一觀的道長牛曹。 經(jīng)常有香客問我佛点,道長,這世上最難降的妖魔是什么黎比? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任超营,我火速辦了婚禮,結果婚禮上阅虫,老公的妹妹穿的比我還像新娘演闭。我一直安慰自己,他們只是感情好颓帝,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布米碰。 她就那樣靜靜地躺著,像睡著了一般购城。 火紅的嫁衣襯著肌膚如雪吕座。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天工猜,我揣著相機與錄音米诉,去河邊找鬼。 笑死篷帅,一個胖子當著我的面吹牛史侣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播魏身,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼惊橱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了箭昵?” 一聲冷哼從身側響起税朴,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎家制,沒想到半個月后正林,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡颤殴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年觅廓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涵但。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡杈绸,死狀恐怖帖蔓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瞳脓,我是刑警寧澤塑娇,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站劫侧,受9級特大地震影響埋酬,放射性物質發(fā)生泄漏。R本人自食惡果不足惜板辽,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一奇瘦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劲弦,春花似錦耳标、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至画畅,卻和暖如春砸琅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背轴踱。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工症脂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人淫僻。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓诱篷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親雳灵。 傳聞我的和親對象是個殘疾皇子棕所,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內(nèi)容