Session控制
1> Session常用来作为全局变量使用,比如记录当前登录的用户,或者页面之间传递数据使用.
2> Beego框架内置了 session 模块,目前 session 模块支持的后端引擎包括 memory、cookie、file、mysql、redis、couchbase、memcache、postgres,用户也可以根据相应的 interface 实现自己的引擎。若是使用标红的部分,需要再下载对应的session包。
3> 在main.go代码中添加启用session方法。具体代码如下:
package main import ( "fmt" "github.com/astaxie/beego/orm" _ "BeegoLearn/routers" "github.com/astaxie/beego" ) //初始化 func init(){ dbhost := beego.AppConfig.String("dbhost") dbport := beego.AppConfig.String("dbport") dbuser := beego.AppConfig.String("dbuser") dbpassword := beego.AppConfig.String("dbpassword") db := beego.AppConfig.String("db") //注册mysql Driver orm.RegisterDriver("mysql", orm.DRMySQL) //构造conn连接 //用户名:密码@tcp(url地址)/数据库 conn := dbuser + ":" + dbpassword + "@tcp(" + dbhost + ":" + dbport + ")/" + db + "?charset=utf8" //注册数据库连接 orm.RegisterDataBase("default", "mysql", conn) fmt.Printf("数据库连接成功!%s\n", conn) } func main() { o := orm.NewOrm() o.Using("default") // 默认使用 default,你可以指定为其他数据库 //启用Session beego.BConfig.WebConfig.Session.SessionOn = true beego.Run() } package main import ( "fmt" "github.com/astaxie/beego/orm" _ "BeegoLearn/routers" "github.com/astaxie/beego" ) //初始化 func init(){ dbhost := beego.AppConfig.String("dbhost") dbport := beego.AppConfig.String("dbport") dbuser := beego.AppConfig.String("dbuser") dbpassword := beego.AppConfig.String("dbpassword") db := beego.AppConfig.String("db") //注册mysql Driver orm.RegisterDriver("mysql", orm.DRMySQL) //构造conn连接 //用户名:密码@tcp(url地址)/数据库 conn := dbuser + ":" + dbpassword + "@tcp(" + dbhost + ":" + dbport + ")/" + db + "?charset=utf8" //注册数据库连接 orm.RegisterDataBase("default", "mysql", conn) fmt.Printf("数据库连接成功!%s\n", conn) } func main() { o := orm.NewOrm() o.Using("default") // 默认使用 default,你可以指定为其他数据库 //启用Session beego.BConfig.WebConfig.Session.SessionOn = true beego.Run() }
4> 新建一个login.go控制器,编写session的逻辑业务
package controllers import ( "fmt" "github.com/astaxie/beego" ) type LoginController struct { beego.Controller } //登录页面 func (c *LoginController) Get() { c.TplName = "login.html" } //登录功能 func (c *LoginController) Post() { name:=c.GetString("name") pwd:=c.GetString("pwd") islogin:=0 if name=="admin" && pwd=="123456"{ c.SetSession("loginuser", "adminuser") fmt.Println("当前的session:") fmt.Println(c.CruSession) }else if name!="admin"{ islogin=1 }else if pwd!="123456"{ islogin=2 } c.Data["json"]=map[string]interface{}{"islogin":islogin}; c.