成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

golang中怎么實現(xiàn)HTTP認證機制

這篇文章給大家介紹golang中怎么實現(xiàn)HTTP認證機制,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)是一家以網站建設公司、網頁設計、品牌設計、軟件運維、網站推廣、小程序App開發(fā)等移動開發(fā)為一體互聯(lián)網公司。已累計為火鍋店設計等眾行業(yè)中小客戶提供優(yōu)質的互聯(lián)網建站和軟件開發(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基本認證機制的實現(xiàn)

復制代碼 代碼如下:

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)
    }
}

關于golang中怎么實現(xiàn)HTTP認證機制就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

文章標題:golang中怎么實現(xiàn)HTTP認證機制
URL標題:http://jinyejixie.com/article34/pggdse.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航虛擬主機、自適應網站企業(yè)建站、建站公司網站內鏈

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網站建設
乌鲁木齐县| 新巴尔虎左旗| 镇宁| 文登市| 庄河市| 额尔古纳市| 德江县| 饶平县| 甘孜县| 富裕县| 拜城县| 勐海县| 鄂尔多斯市| 霸州市| 禹城市| 顺义区| 苍南县| 柳州市| 剑河县| 武邑县| 洪洞县| 浮梁县| 商河县| 孝昌县| 宜章县| 镇雄县| 洪江市| 南乐县| 临海市| 邓州市| 象山县| 台东县| 阿图什市| 巴马| 两当县| 什邡市| 永安市| 焉耆| 和龙市| 茌平县| 深州市|