Execute模板后setCookie失效?

eleecn · 2016-03-16 16:30:42 · 2352 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2016-03-16 16:30:42 的主题,其中的信息可能已经有所发展或是发生改变。

刚开始学GO,遇到这样的情况:

    t, err := template.ParseFiles("/template/login.tpl")

    err = t.Execute(w, nil)                 //如果先执行

    http.SetCookie(。。。)//失败,浏览器无法收到cookie

如果调换顺序,先setCookie,再Execute,便可成功设置cookie。 计划是在登陆页面login.tpl,ParseForm( )获取用户名和密码,验证合格以后才发放sessionID,如果反着写,虽然也能办到,但ParseForm( )和验证环节跑到了模板Execute前面:

    r.ParseForm( )                         //模板还未加载,先ParseForm( )居然也成功通过
    email := r.FormValue("email")
    pass := r.FormValue("pass")
    var loginPass = checkLogin(email, pass) //验证用户名和密码
    if loginPass == true {                             //用户名密码正确
        cookie1 := http.Cookie{Name: "test", Value: "testvalue", Path: "/", MaxAge: 86400}
        http.SetCookie(w, &cookie1)         //成功设置cookie
        fmt.Println("登录成功: ", email)
    } else {
        fmt.Println("请登录: ", email)
    }

    t, err := template.ParseFiles("/template/login.tpl")
    err = t.Execute(w, nil)                          //模板必须放到后面加载

请问为什么必须这样反着写啊? 初学GO,多谢大家的关注,还请不吝赐教!


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2352 次点击  
加入收藏 微博
2 回复  |  直到 2016-03-17 20:31:22
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传