Android客戶端和服務(wù)端如何使用Token和Session

對于初學(xué)者來說,對Token和Session的使用難免會限于困境吩抓,開發(fā)過程中知道有這個(gè)東西涉茧,但卻不知道為什么要用他?更不知道其原理疹娶,今天我就帶大家一起分析分析這東西伴栓。

我們先解釋一下他的含義:

1、Token的引入:Token是在客戶端頻繁向服務(wù)端請求數(shù)據(jù)雨饺,服務(wù)端頻繁的去數(shù)據(jù)庫查詢用戶名和密碼并進(jìn)行對比钳垮,判斷用戶名和密碼正確與否,并作出相應(yīng)提示额港,在這樣的背景下饺窿,Token便應(yīng)運(yùn)而生。

2移斩、Token的定義:Token是服務(wù)端生成的一串字符串肚医,以作客戶端進(jìn)行請求的一個(gè)令牌,當(dāng)?shù)谝淮蔚卿浐笙虼桑?wù)器生成一個(gè)Token便將此Token返回給客戶端肠套,以后客戶端只需帶上這個(gè)Token前來請求數(shù)據(jù)即可,無需再次帶上用戶名和密碼猖任。

3你稚、使用Token的目的:Token的目的是為了減輕服務(wù)器的壓力,減少頻繁的查詢數(shù)據(jù)庫,使服務(wù)器更加健壯入宦。

了解了Token的意義后哺徊,我們就更明確的知道為什么要用他了。

如何使用Token乾闰?

這是本文的重點(diǎn)落追,在這里我就介紹常用的兩種方式。

1涯肩、用設(shè)備號/設(shè)備mac地址作為Token(推薦)

客戶端:客戶端在登錄的時(shí)候獲取設(shè)備的設(shè)備號/mac地址轿钠,并將其作為參數(shù)傳遞到服務(wù)端。

服務(wù)端:服務(wù)端接收到該參數(shù)后病苗,便用一個(gè)變量來接收同時(shí)將其作為Token保存在數(shù)據(jù)庫疗垛,并將該Token設(shè)置到session中,客戶端每次請求的時(shí)候都要統(tǒng)一攔截硫朦,并將客戶端傳遞的token和服務(wù)器端session中的token進(jìn)行對比贷腕,如果相同則放行,不同則拒絕咬展。

分析:此刻客戶端和服務(wù)器端就統(tǒng)一了一個(gè)唯一的標(biāo)識Token泽裳,而且保證了每一個(gè)設(shè)備擁有了一個(gè)唯一的會話。該方法的缺點(diǎn)是客戶端需要帶設(shè)備號/mac地址作為參數(shù)傳遞破婆,而且服務(wù)器端還需要保存涮总;優(yōu)點(diǎn)是客戶端不需重新登錄,只要登錄一次以后一直可以使用祷舀,至于超時(shí)的問題是有服務(wù)器這邊來處理瀑梗,如何處理?若服務(wù)器的Token超時(shí)后裳扯,服務(wù)器只需將客戶端傳遞的Token向數(shù)據(jù)庫中查詢抛丽,同時(shí)并賦值給變量Token,如此嚎朽,Token的超時(shí)又重新計(jì)時(shí)铺纽。

2、用session值作為Token

客戶端:客戶端只需攜帶用戶名和密碼登陸即可哟忍。

客戶端:客戶端接收到用戶名和密碼后并判斷,如果正確了就將本地獲取sessionID作為Token返回給客戶端陷寝,客戶端以后只需帶上請求數(shù)據(jù)即可锅很。

分析:這種方式使用的好處是方便,不用存儲數(shù)據(jù)凤跑,但是缺點(diǎn)就是當(dāng)session過期后,客戶端必須重新登錄才能進(jìn)行訪問數(shù)據(jù)。

使用過程中出現(xiàn)的問題以及解決方案宠叼?

剛才我們輕松介紹了Token的兩種使用方式,但是在使用過程中我們還出現(xiàn)各種問題褐奥,Token第一種方法中我們隱藏了一個(gè)在網(wǎng)絡(luò)不好或者并發(fā)請求時(shí)會導(dǎo)致多次重復(fù)提交數(shù)據(jù)的問題。

該問題的解決方案:將session和Token套用翘簇,如此便可解決撬码,如何套用呢?請看這段解釋:

這就是解決重復(fù)提交的方案版保。

總結(jié):以上是個(gè)人對開發(fā)中使用Token和session的一點(diǎn)總結(jié)呜笑,如有敘述不當(dāng)之處請指正,我將及時(shí)改正并感謝彻犁,我知道還有更多更好的使用方式叫胁,我在這里只是拋磚引玉,希望大家將您的使用方式提出來汞幢,我們一起討論驼鹅,學(xué)習(xí),一起進(jìn)步森篷,同時(shí)也為像我一樣對這方面理解薄弱的朋友提供點(diǎn)幫助输钩,謝謝。

本文在開源項(xiàng)目:https://github.com/Android-Alvin/Android-LearningNotes 中已收錄疾宏,里面包含不同方向的自學(xué)編程路線张足、面試題集合/面經(jīng)、及系列技術(shù)文章等坎藐,資源持續(xù)更新中...

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末为牍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子岩馍,更是在濱河造成了極大的恐慌碉咆,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛀恩,死亡現(xiàn)場離奇詭異疫铜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)双谆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門壳咕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人顽馋,你說我怎么就攤上這事谓厘。” “怎么了寸谜?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵竟稳,是天一觀的道長。 經(jīng)常有香客問我,道長他爸,這世上最難降的妖魔是什么聂宾? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮诊笤,結(jié)果婚禮上系谐,老公的妹妹穿的比我還像新娘。我一直安慰自己盏混,他們只是感情好蔚鸥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著许赃,像睡著了一般止喷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上混聊,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天弹谁,我揣著相機(jī)與錄音,去河邊找鬼句喜。 笑死预愤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的咳胃。 我是一名探鬼主播植康,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼展懈!你這毒婦竟也來了销睁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤存崖,失蹤者是張志新(化名)和其女友劉穎冻记,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體来惧,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冗栗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了供搀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隅居。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖葛虐,靈堂內(nèi)的尸體忽然破棺而出军浆,到底是詐尸還是另有隱情,我是刑警寧澤挡闰,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響摄悯,放射性物質(zhì)發(fā)生泄漏赞季。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一奢驯、第九天 我趴在偏房一處隱蔽的房頂上張望申钩。 院中可真熱鬧,春花似錦瘪阁、人聲如沸撒遣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽义黎。三九已至,卻和暖如春豁跑,著一層夾襖步出監(jiān)牢的瞬間廉涕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工艇拍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狐蜕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓卸夕,卻偏偏與公主長得像层释,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子快集,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

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