lundi 6 avril 2015

How to use session with golang revel framework

I use the golang web framework as my web framework. But the session doesn`t use. the code I write as follow :



package controllers

import (
"fmt"
"net/http"
"strconv"

"GoRBAC/app/base"
"GoRBAC/app/models"

r "http://ift.tt/1lwG43h"
)

type App struct {
*r.Controller
}

// 首页
func (this App) Index() r.Result {
userDao := models.NewUserDao()
user, err := userDao.QueryById(1)
if err != nil {
fmt.Println(err)
}
fmt.Println(user)
return this.Render()
}

// 跳转至登录页面
func (this App) ToLogin() r.Result {
return this.RenderTemplate("App/login.html")
}

func (this App) Login() r.Result {

username := this.Params.Get("username")
password := this.Params.Get("password")
securityCode := this.Params.Get("securityCode")

fmt.Println(this.Session["securityCode"])
fmt.Println(username)
fmt.Println(password)
fmt.Println(securityCode)

if securityCode != this.Session["securityCode"] {
return this.RenderText("error securityCode")
} else {
userDao := models.NewUserDao()
user, err := userDao.QueryByUsername(username)
if err != nil || user == nil {
return this.RenderText("username not exsit")
} else if user.Password != password {
return this.RenderText("error password")
} else {
delete(this.Session, "securityCode")
this.RenderText("ok")
}
}
return this.RenderText("ok")
}

// 获取验证码图片
func (this App) GetSecurityCode(timestamp int64) r.Result {
// 时间戳参数,第一次加载为1,后续加载为当前的时间戳,可以用来验证客户端刷新频率
// 如:刷新频率过高,直接限制当前客户端等
fmt.Println("GetSecurityCode", timestamp)

d := make([]byte, 4)
s := base.NewLen(4)
ss := ""
d = []byte(s)

for v := range d {
d[v] %= 10
ss += strconv.FormatInt(int64(d[v]), 32)
}

// 将验证码字符串存入到session
this.Session["securityCode"] = ss
this.Session.SetNoExpiration()

fmt.Println(this.Session["securityCode"])
fmt.Println(ss)

this.Response.Status = http.StatusOK
this.Response.ContentType = "image/png"

base.NewImage(d, 100, 40).WriteTo(this.Response.Out)

return this.Render()
}


I set the securityCode value in session in the method GetSecurityCode() , this method use to generate the security Code for login verify


I use the the securityCode value in the method Login(). But I get nothing for the value


Anyone who can help me , how can I fix this problem ?


thanks !!





Aucun commentaire:

Enregistrer un commentaire