小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

服務(wù)端token 怎樣設(shè)計

 quasiceo 2015-06-24

服務(wù)端token 怎樣設(shè)計

Ruby · whatisruby · 于 2 年前發(fā)布 · 最后由 leonkaiyu2 年前回復 · 4544 次閱讀
2943

最近要給 手機應(yīng)用客戶端提供api
目前還不確定用哪些,或則sinatra還是 grape?,求推薦!!

回到主題
因為api 需要權(quán)限控制,所以有些api需要帶上token。
請教大家:服務(wù)端產(chǎn)生的token,一般是放在數(shù)據(jù)庫,每次請求api都查詢一次
還是放在內(nèi)存中,然后設(shè)計過期時間?

麻煩大家提供靠譜點的思路

(我看了下ruby-china的代碼,好像直接存入user表,每次請求查詢一次的)

共收到 16 條回復
D62d782bd0ed42394797cff8a9adae70
woaigithub · #1 · 2 年前 喜歡

內(nèi)存和數(shù)據(jù)庫都需要,內(nèi)存可以加快請求速度,減少數(shù)據(jù)庫請求。

D62d782bd0ed42394797cff8a9adae70
woaigithub · #2 · 2 年前 喜歡

產(chǎn)生過程和驗證過程可以參考oauth的token驗證和授權(quán)過程。

D62d782bd0ed42394797cff8a9adae70
woaigithub · #3 · 2 年前 喜歡

或者是一個簡單的,我們現(xiàn)在使用的就是token。
在訪問任何服務(wù)之前都需要先訪問一個獲取token的服務(wù),服務(wù)在后臺生成一個token,存入數(shù)據(jù)庫。
后續(xù)的服務(wù)訪問,都需要傳入username和token,服務(wù)會判斷token是否和username匹配,token是否過期。
過期用的定時服務(wù),定時刪除超時的token,下次驗證就可以做過期提示了。

D62d782bd0ed42394797cff8a9adae70
woaigithub · #4 · 2 年前 喜歡

這個比較簡單。
可以增加一個授權(quán)的過程。
就是client提交key-secret,驗證client是否合法client。
如果是合法client,返回一個未授權(quán)的token,然后再用這個token請求一個授權(quán)的token。
使用授權(quán)的token訪問服務(wù)。

8
hooooopo · #5 · 2 年前 喜歡

session驗證滿足不了你的需求么

E9abf4a0c4ccb3e2a8828d30ef5a717c
allenwei · #6 · 2 年前 喜歡

個人建議用sinatra,更靈活
token的話,不如直接上oauth? https://github.com/songkick/oauth2-provider

2943
whatisruby · #7 · 2 年前 喜歡

#4樓 @woaigithub 后臺服務(wù)的數(shù)據(jù)庫應(yīng)該還是需要用到內(nèi)存數(shù)據(jù)庫吧
#5樓 @hooopo session怎么用?
#6樓 @allenwei 剛接觸ruby不久,不是很理解咋用這個啊 - -!

D62d782bd0ed42394797cff8a9adae70
woaigithub · #8 · 2 年前 喜歡

用內(nèi)存數(shù)據(jù)庫是因為可以加快訪問和驗證,現(xiàn)從數(shù)據(jù)庫獲取驗證也是可以的。

27e5687777d1224f8353b1c103f5bf25
sparkle · #9 · 2 年前 喜歡

每次請求都要帶上其實是session
token一般是用來做一次驗證,短時間過期,驗證通過之后換session
session解決方案很多,不用自己做了

2943
whatisruby · #10 · 2 年前 喜歡

#8樓 @woaigithub
#9樓 @sparkle 嗯嗯,哪里有現(xiàn)成的demo 讓我喵一眼啊 呵呵

27e5687777d1224f8353b1c103f5bf25
sparkle · #11 · 2 年前 喜歡

rails里面就有很多session
內(nèi)存、文件、數(shù)據(jù)庫、dbr、redis都有

2943
whatisruby · #12 · 2 年前 喜歡

#11樓 @sparkle session 應(yīng)該保存不了吧,手機客戶端請求服務(wù)端,沒有瀏覽器的支持,估計session 是馬上消失的,我都打算禁用session呢

27e5687777d1224f8353b1c103f5bf25
sparkle · #13 · 2 年前 喜歡

不是說通過瀏覽器的cookie傳進來的session id才叫session
session id可以自己的代碼傳進來

2943
whatisruby · #14 · 2 年前 喜歡

#13樓 @sparkle 恩,所以這個session 只是名字上是session而已,對吧
我現(xiàn)在打算的做法是:把key(token):value(user_id) 放在redis內(nèi)存數(shù)據(jù)庫
然后設(shè)置這個key的過期時間,這個做法靠譜不?

2943
whatisruby · #15 · 2 年前 喜歡

我前面的做法不對,我理解 13樓 sparkle 的說法了

2873
Guest · #16 · 2 年前 喜歡

#13樓 @sparkle 我一直非常關(guān)注這塊,學習Ruby也是因為ROR的RESTful風格在API開發(fā)時候的首選。其實最成熟的解決方案是XAuth,因為通過公鑰和私鑰對 生成(混入Action)的token目前相對安全度很高。如果使用session_id,安全會存在截獲session_id以后,非法侵入。

歡迎討論!

  • #6樓 @allenwei 有oauth2-provider的實際項目經(jīng)歷嗎?不知道有沒有XAuth版本?性能如何?

https://dev.twitter.com/docs/oauth/xauth

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多