doutang6130 2018-09-13 10:55
浏览 116

未使用Golang设置Cookie

I have a REST API for login a user which sets a cookie on the browser for logged-in user and its working well. The problem is when I want to call login API when user completed their registration from signup API, so that time every thing working well but cookie doesn't set to browser.

Here is login API:

var loginViaDjangoApiShim = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {

        var t loginPost
        var oldCookieToken string

        decoder := json.NewDecoder(r.Body)
        _:= decoder.Decode(&t)
        expiration := time.Now().Add(365 * 24 * time.Hour)

        flagToReturn, cookie, _:= postToApiShim(t.Username, t.Password)
        if flagToReturn == "pass" {
            CookieToken = generateOldCookie(authIdFromUserName.ID)

            newCookieToSet := http.Cookie{Name: "ddagyeog", Value: CookieToken , Expires: expiration, Domain: COOKIE_DOMAIN, Path: "/", Secure: false, HttpOnly: true}
            http.SetCookie(w, &newCookieToSet)
        }
        returnValues := returnLoginFlag{Flag: flagToReturn, Cookie: ""}
        json.NewEncoder(w).Encode(returnValues)

    })

And here registration API:

var signUpStart = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {

    var t StartFlowPost

    decoder := json.NewDecoder(r.Body)
    _:= decoder.Decode(&t)
        insertIntoUser := InsertMethod(t)
            flag, _ := loginOnCoppaAndNonCoppaUsersSignup(t.UserName, t.Password)

        log.Println(flag)
        json.NewEncoder(w).Encode(flag)

})

And below is loginOnCoppaAndNonCoppaUsersSignup which calls login API after signup user.

func loginOnCoppaAndNonCoppaUsersSignup(userName, password string) (flag returnSignUpFlagCoppa, err error) {
    var loginFlag returnLoginFlag
    var jsonStr = []byte(`{
    "username":"` + userName + `",
    "password":"` + password + `"
    }`)

    request, _ := http.NewRequest("POST", USER_ROOT_URL+"login", bytes.NewBuffer(jsonStr))
    request.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    response, _:= client.Do(request)

    decoder := json.NewDecoder(response.Body)
    if err = decoder.Decode(&loginFlag); err != nil {
        return flag, err
    }

    if loginFlag.Flag == "pass" {
        flag = returnSignUpFlagCoppa{Flag: "pass", Username: userName}
        log.Println(flag)
    } else {
        flag := returnSignUpFlagCoppa{Flag: "error"}
        log.Println(flag)
    }

    return flag, nil
}
  • 写回答

1条回答 默认 最新

  • dongnong3799 2018-09-13 11:26
    关注

    Here you can get cookie from login URL response like.

    cookies := response.Cookies()
    

    Then you have to set those cookies with http.SetCookie() again in signup API.Follow the below code.

    for _, cookie := range response.Cookies() {
        http.SetCookie(w, cookie)
     }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b