最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang的HTTP基本認(rèn)證機(jī)制實(shí)例詳解

 更新時(shí)間:2016年07月22日 10:27:13   作者:dotcoo  
這篇文章主要介紹了golang的HTTP基本認(rèn)證機(jī)制,結(jié)合實(shí)例形式較為詳細(xì)的分析了HTTP請(qǐng)求響應(yīng)的過程及認(rèn)證機(jī)制實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了golang的HTTP基本認(rèn)證機(jī)制。分享給大家供大家參考,具體如下:

看了<<http權(quán)威指南>>第12章HTTP基本認(rèn)證機(jī)制(本站下載地址:http://m.fzitv.net/books/93254.html),感覺講的蠻詳細(xì)的,寫了一個(gè)小小例子測(cè)試.

請(qǐng)求響應(yīng)過程:

復(fù)制代碼 代碼如下:
==>
GET /hello HTTP/1.1
Host: 127.0.0.1:12345
<==
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Dotcoo User Login"
==>
GET /hello HTTP/1.1
Host: 127.0.0.1:12345
Authorization: Basic YWRtaW46YWRtaW5wd2Q=
<==
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8

golang HTTP基本認(rèn)證機(jī)制的實(shí)現(xiàn)

復(fù)制代碼 代碼如下:
package main
import (
    "fmt"
    "io"
    "net/http"
    "log"
    "encoding/base64"
    "strings"
)
// hello world, the web server
func HelloServer(w http.ResponseWriter, req *http.Request) {
    auth := req.Header.Get("Authorization")
    if auth == "" {
        w.Header().Set("WWW-Authenticate", `Basic realm="Dotcoo User Login"`)
        w.WriteHeader(http.StatusUnauthorized)
        return
    }
    fmt.Println(auth)
    auths := strings.SplitN(auth, " ", 2)
    if len(auths) != 2 {
        fmt.Println("error")
        return
    }
    authMethod := auths[0]
    authB64 := auths[1]
    switch authMethod {
    case "Basic":
        authstr, err := base64.StdEncoding.DecodeString(authB64)
        if err != nil {
            fmt.Println(err)
            io.WriteString(w, "Unauthorized!\n")
            return
        }
        fmt.Println(string(authstr))
        userPwd := strings.SplitN(string(authstr), ":", 2)
        if len(userPwd) != 2 {
            fmt.Println("error")
            return
        }
        username := userPwd[0]
        password := userPwd[1]
        fmt.Println("Username:", username)
        fmt.Println("Password:", password)
        fmt.Println()
    default:
        fmt.Println("error")
        return
    }
    io.WriteString(w, "hello, world!\n")
}
func main() {
    http.HandleFunc("/hello", HelloServer)
    err := http.ListenAndServe(":12345", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

希望本文所述對(duì)大家Go語言程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Go語言如何使用golang-jwt/jwt/v4進(jìn)行JWT鑒權(quán)詳解

    Go語言如何使用golang-jwt/jwt/v4進(jìn)行JWT鑒權(quán)詳解

    最近項(xiàng)目中需要用到鑒權(quán)機(jī)制,golang中jwt可以用,這篇文章主要給大家介紹了關(guān)于Go語言如何使用golang-jwt/jwt/v4進(jìn)行JWT鑒權(quán)的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 文字解說Golang Goroutine和線程的區(qū)別

    文字解說Golang Goroutine和線程的區(qū)別

    goroutine 是 Go語言中的輕量級(jí)線程實(shí)現(xiàn),由 Go 運(yùn)行時(shí)(runtime)管理,使用每一個(gè) go 關(guān)鍵字將會(huì)額外開啟一個(gè)新的協(xié)程 goroutine,今天通過本文給大家介紹下Golang Goroutine和線程的區(qū)別,感興趣的朋友一起看看吧
    2022-03-03
  • go內(nèi)存緩存BigCache封裝Entry源碼解讀

    go內(nèi)存緩存BigCache封裝Entry源碼解讀

    這篇文章主要為大家介紹了go內(nèi)存緩存BigCache封裝Entry源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Go標(biāo)準(zhǔn)庫常見錯(cuò)誤分析和解決辦法

    Go標(biāo)準(zhǔn)庫常見錯(cuò)誤分析和解決辦法

    Go語言的標(biāo)準(zhǔn)庫為開發(fā)者提供了豐富且高效的工具,涵蓋了從網(wǎng)絡(luò)編程到文件操作等各個(gè)方面,然而,標(biāo)準(zhǔn)庫雖好,使用不當(dāng)卻可能適得其反,正所謂"工欲善其事,必先利其器",本文將深入剖析Go標(biāo)準(zhǔn)庫使用中的常見錯(cuò)誤,幫助開發(fā)者避開這些坑,寫出更加健壯的代碼
    2025-04-04
  • golang實(shí)現(xiàn)文件上傳并轉(zhuǎn)存數(shù)據(jù)庫功能

    golang實(shí)現(xiàn)文件上傳并轉(zhuǎn)存數(shù)據(jù)庫功能

    這篇文章主要為大家詳細(xì)介紹了golang實(shí)現(xiàn)文件上傳并轉(zhuǎn)存數(shù)據(jù)庫功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Go如何優(yōu)雅的關(guān)閉goroutine協(xié)程

    Go如何優(yōu)雅的關(guān)閉goroutine協(xié)程

    本文將介紹首先為什么需要主動(dòng)關(guān)閉goroutine,并介紹如何在Go語言中關(guān)閉goroutine的常見套路,包括傳遞終止信號(hào)和協(xié)程內(nèi)部捕捉終止信號(hào),之后,文章列舉了需要主動(dòng)關(guān)閉協(xié)程運(yùn)行的常見場(chǎng)景,希望通過本文的介紹,讀者能夠掌握如何在適當(dāng)?shù)臅r(shí)候關(guān)閉goroutine
    2023-05-05
  • Golang中Json的序列化和反序列化的使用

    Golang中Json的序列化和反序列化的使用

    本文主要介紹了Golang中Json的序列化和反序列化的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Golang指針隱式間接引用詳解

    Golang指針隱式間接引用詳解

    在 Go中,指針隱式解引用是指通過指針直接訪問指針?biāo)赶虻闹?,而不需要顯式地使用 * 運(yùn)算符來解引用指針,這篇文章主要介紹了Golang指針隱式間接引用,需要的朋友可以參考下
    2023-05-05
  • go項(xiàng)目實(shí)現(xiàn)mysql接入及web?api的操作方法

    go項(xiàng)目實(shí)現(xiàn)mysql接入及web?api的操作方法

    這篇文章主要介紹了go項(xiàng)目實(shí)現(xiàn)mysql接入以及web api,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Go-Web框架中AOP方案的實(shí)現(xiàn)方式

    Go-Web框架中AOP方案的實(shí)現(xiàn)方式

    本文主要介紹了Go-Web框架中AOP方案的實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評(píng)論

奉节县| 鄂托克前旗| 龙泉市| 札达县| 中山市| 眉山市| 涞水县| 富民县| 宣化县| 明光市| 云林县| 南安市| 梁河县| 长海县| 绍兴市| 罗山县| 库尔勒市| 原平市| 电白县| 长子县| 宣汉县| 藁城市| 大安市| 贡嘎县| 克什克腾旗| 额济纳旗| 鹰潭市| 霍邱县| 玉龙| 米脂县| 通山县| 昌乐县| 彭泽县| 大港区| 天全县| 六安市| 马龙县| 抚松县| 加查县| 武安市| 海门市|