成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

騰訊 Tars Web 管理端用戶體系對接

lncwwn / 3449人閱讀

摘要:本文記錄一下我的用戶體系對接實(shí)驗(yàn)中的一些筆記,便于其他的用戶參閱。該服務(wù)是服務(wù),有獨(dú)立的用戶登錄登出功能。結(jié)語本文給出了一個最簡單的對接第三方用戶體系的方法。原文標(biāo)題騰訊管理端用戶體系對接發(fā)布日期原文鏈接。

背景

這段時(shí)間一直在基于 Tars 作開發(fā)。最近的文章也多是針對 Tars 的一些學(xué)習(xí)筆記。前面我們搭建了 Tars 基礎(chǔ)框架,打開了 Tars web 管理界面進(jìn)行服務(wù)的運(yùn)維操作。不過讀者肯定很快就會發(fā)現(xiàn):這好像不用登錄啊,那怎么保證只有有權(quán)限的用戶才能更改服務(wù)呢?

顯然 Tars web 是支持用戶鑒權(quán)的。官方文檔在這里。本文記錄一下我的用戶體系對接實(shí)驗(yàn)中的一些筆記,便于其他 Tars 的用戶參閱。(特別是像我這樣對 Node.js 不熟悉的小白……)

本系列文章:

騰訊 Tars 基礎(chǔ)框架手動搭建——填掉官方 Guide 的坑

騰訊 Tars-Go 服務(wù) Hello World——從 HTTP 開始

騰訊 Tars-Go 服務(wù) Hello World——RPC 通信

騰訊 Tars-Go 服務(wù)獲取自定義模版(配置)值

騰訊 Tars Web 管理端用戶體系對接(本文)

本文地址:https://segmentfault.com/a/1190000019657656

Tars 用戶鑒權(quán)流程 準(zhǔn)備

如果要啟用 Tars web 的用戶功能,那么首先開發(fā)者需要設(shè)計(jì)一個自己的用戶登錄服務(wù)。該服務(wù)是 http 服務(wù),有獨(dú)立的用戶登錄、登出功能。Tars Web 本身實(shí)現(xiàn)了一個簡單的用戶功能,不過本文我們重新設(shè)計(jì)一個。為便于說明,我們假設(shè)這個 Tars web 和用戶服務(wù) web 環(huán)境如下:

Tars Web URL:https://tars.amc.com

用戶 Web URL:https://user.amc.com

基本流程

從用戶通過瀏覽器訪問 Tars web 管理平臺開始,如果啟用了用戶功能,那么基本流程如下:

一言以蔽之:每當(dāng)瀏覽器向 Tars web 發(fā)起一個請求時(shí),Tars web 均向用戶服務(wù)器發(fā)起請求,判斷用戶是否有權(quán)限;如果鑒權(quán)通過,則正常操作 Tars;如果沒有,則重定向至用戶登錄頁面。

Tars Web 端配置

用戶體系配置在 TarsWeb/config/loginConfig.js 文件中,讀者可以查詢代碼直接研究詳細(xì)用法,我這邊對接的是最基礎(chǔ)的功能(其實(shí)也夠用了),下面列出涉及到的相關(guān)配置值:

module.exports = {
    enableLogin: true,                                // 啟用登錄驗(yàn)證
    loginUrl: "https://user.amc.com/login.html",    // 當(dāng)鑒權(quán)失敗時(shí),重定向的 URL
    redirectUrlParamName: "redirect_url",            // 上述重定向時(shí),在 URL 中帶 Tars 原 URL 的參數(shù)名。后文說明
    uidCookieName: "uid",                           // 用戶服務(wù)在 cookies 里用于保存用戶名的 cookie 名
    ticketCookieName: "ticket",                     // 用戶服務(wù)在 cookies 里用于保存票據(jù)的 cookie 名
    cookieDomain: "amc.com",                          // 用戶服務(wù)的 cookies 所屬的域,注意需讓 Tars web 能夠訪問到
    validate: "https://auth.amc.com/cgi-bin/validate",    // Tars Web 向用戶服務(wù)判斷是否有去用戶權(quán)限時(shí)使用的請求
    validateUidParamName: "uid",                    // 請求 validate 時(shí),POST body 中存放用戶名的參數(shù)名
    validateTicketParamName: "ticket",              // 請求 validate 時(shí),POST body 中存放票據(jù)的參數(shù)名
    validateMatch: [                                // validate 返回 JSON 響應(yīng)時(shí),Tars Web 如何判斷結(jié)果
        ["code", 0],                                // 這樣表示判斷條件為 resp.code == 0
        ["data.result", true]                        // 表示判斷條件為 resp.data.result == true
    ],                                                // 多個條件為 AND 的關(guān)系,需要全部條件均通過才認(rèn)為鑒權(quán)通過
    ignore: ["/static"],                             // 表示不需要登錄校驗(yàn)的路徑,如果每個請求都向用戶鑒權(quán)一下,還是很浪費(fèi)的
    ignoreIps: [],                                   // 訪問 IP 白名單
};

有了這個配置之后,我們重新說明一下前文的圖片:

無票據(jù)或票據(jù)失效情況下訪問 Tars Web

用戶通過瀏覽器訪問 https://tars.amc.com,此時(shí) Tars Web 根據(jù)配置里說明的,從 cookie 中,取出 uidticket 參數(shù)值,然后以以下 Json 格式,向 https://user.amc.com/cgi-bin/validate 發(fā)出請求:

{
    "uid": "xxxxx",            // 如果 cookie 不存在,這里的值會是 "undefined"
    "ticket": "xxxxx",        // 如果 cookie 不存在,這里的值會是 "undefined"
}

user.amc.com 返回失敗的時(shí)候,只要不返回 validateMatch 中指定的條件就行了。

此時(shí) TarsWeb 會直接返回 http 狀態(tài)碼 307,重定向 URL :

https://user.amc.com/login.html?redirect_url=https%3A%2F%2Ftars.amc.com%2F

通過登錄服務(wù)登錄

瀏覽器通過重定向的 URL 訪問用戶服務(wù),并進(jìn)行登錄操作。用戶服務(wù)應(yīng)能夠根據(jù) Tars Web 帶上的 redirect_url 參數(shù),在用戶登錄成功后,跳轉(zhuǎn)到 Tars Web 上。

票據(jù)有效時(shí)訪問 Tars Web

用戶登錄成功后,重定向到 Tars Web 或用戶在票據(jù)有效期內(nèi)訪問 Tars Web 時(shí),Tars 依然會按照配置,請求 https://user.amc.com/cgi-bin/validate 以判斷票據(jù)。此時(shí)按照配置,用戶服務(wù)應(yīng)該返回包含以下信息:

{
    "code": 0,
    "data": {
        "result": true
    }
}

這樣,Tars Web 根據(jù)配置,就能認(rèn)為票據(jù)是有效的,因而繼續(xù)后續(xù)的 Tars 操作。

用戶登出

登錄成功后,用戶可以看到在 Tars Web 界面的右上角出現(xiàn)了自己的 uid 名。用戶名的下拉菜單只有一個選項(xiàng),就是注銷操作。在沒有配置 logoutUrl 的情況下,Tars Web 實(shí)現(xiàn)退出登錄的邏輯就是簡單地刪掉配置中提及的 uidticket cookies 值。其實(shí)這樣的邏輯也夠了。

結(jié)語

本文給出了一個最簡單的對接第三方用戶體系的方法。其實(shí)筆者是想要對接微信網(wǎng)站登錄的,不過因?yàn)樽约菏诸^沒有做網(wǎng)站備案而作罷。不過為企業(yè)網(wǎng)站部署的讀者,也可以這么做,這樣其實(shí)安全性更高,而且操作更方便。

本文章采用 知識共享署名-非商業(yè)性使用-相同方式共享 4.0 國際許可協(xié)議 進(jìn)行許可。

原作者: amc,歡迎轉(zhuǎn)載,但請注明出處。

原文標(biāo)題:《騰訊 Tars Web 管理端用戶體系對接》

發(fā)布日期:2019-4-7

原文鏈接:https://cloud.tencent.com/developer/article/1410611。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105278.html

相關(guān)文章

  • 干貨| PHPCon上TARS-PHP全面解讀及PPT下載

    摘要:年月日,在上海舉行的第六屆中國開發(fā)者大會上,騰訊開源項(xiàng)目首次全面發(fā)布版本,閱文集團(tuán)高級開發(fā)工程師梁晨對如何通過構(gòu)建高性能框架做了經(jīng)驗(yàn)分享。分享內(nèi)容作為騰訊開源的框架,在發(fā)布之后即受到開源領(lǐng)域的關(guān)注。閱文集團(tuán)本身也有一塊新的業(yè)務(wù)在使用。 2018年5月19日,在上海舉行的第六屆中國PHP開發(fā)者大會(PHPCon)上,騰訊開源項(xiàng)目TARS首次全面發(fā)布PHP版本,閱文集團(tuán)高級開發(fā)工程師梁晨對...

    JasonZhang 評論0 收藏0
  • 騰訊與閱文技術(shù)合作 微服務(wù)框架Tars再添PHP

    摘要:引言作為由騰訊公司開源的優(yōu)秀框架與服務(wù)部署運(yùn)維解決方案,被閱文集團(tuán)引入了實(shí)際實(shí)踐中,同時(shí)閱文集團(tuán)對在語言層面進(jìn)行了能力的補(bǔ)全,令如虎添翼。作為騰訊公司的優(yōu)秀框架與服務(wù)部署運(yùn)維解決方案,可以滿足上述的所有需求。 梁晨(Ted),任職閱文集團(tuán)技術(shù)中心,負(fù)責(zé)起點(diǎn)中文網(wǎng)的WEB后臺開發(fā)工作。曾負(fù)責(zé)騰訊上海企業(yè)產(chǎn)品部營銷QQWeb后臺開發(fā)、QQ公眾號Web后臺開發(fā),對大型網(wǎng)站技術(shù)架構(gòu),有自己的經(jīng)...

    yanwei 評論0 收藏0
  • 騰訊開源項(xiàng)目TARS首次全面發(fā)布PHP版本

    摘要:月日,在上海舉行的第六屆中國開發(fā)者大會上,騰訊開源項(xiàng)目首次全面發(fā)布版本,閱文集團(tuán)高級開發(fā)工程師梁晨對如何通過構(gòu)建高性能框架做了經(jīng)驗(yàn)分享。騰訊開源項(xiàng)目貢獻(xiàn)者,騰訊開發(fā)組成員,對于構(gòu)建高性能后臺微服務(wù)治理有豐富的經(jīng)驗(yàn)。 5月19日,在上海舉行的第六屆中國PHP開發(fā)者大會(PHPCon)上,騰訊開源項(xiàng)目TARS首次全面發(fā)布PHP版本,閱文集團(tuán)高級開發(fā)工程師梁晨(Ted)對PHP如何通過TAR...

    appetizerio 評論0 收藏0
  • 騰訊正式對外開源高性能 RPC 開發(fā)框架與微服務(wù)平臺Tars

    摘要:是將騰訊內(nèi)部使用的微服務(wù)架構(gòu)多年的實(shí)踐成果總結(jié)而成的開源項(xiàng)目,目前已于月日正式對外開源。 Tars 是將騰訊內(nèi)部使用的微服務(wù)架構(gòu) TAF(Total Application Framework)多年的實(shí)踐成果總結(jié)而成的開源項(xiàng)目,目前已于4月10日正式對外開源。 作為支持多語言的高性能 RPC 開發(fā)框架和配套一體化的服務(wù)治理平臺,Tars可以幫助企業(yè)或者用戶以微服務(wù)的方式快速構(gòu)建穩(wěn)定可靠...

    weizx 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<