登录
首页 >  Golang >  Go问答

Cookie 未使用 Golang 设置

来源:stackoverflow

时间:2024-04-02 16:27:36 429浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《Cookie 未使用 Golang 设置》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

我有一个用于登录用户的 rest api,它在浏览器上为登录用户设置 cookie,并且运行良好。 问题是,当用户从注册 api 完成注册时,我想调用登录​​ api,这样当时一切都正常,但 cookie 没有设置到浏览器。

这是登录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)

    })

此处注册 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)

})

下面是 loginoncoppaandnoncoppauserssignup,它在注册用户后调用登录 api。

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
}

解决方案


在这里您可以从登录 url 响应中获取 cookie。

cookies := response.cookies()

然后您必须在注册 api 中再次使用 http.setcookie() 设置这些 cookie。请按照以下代码操作。

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

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>