beego mysql session_Beego 学习笔记14:Session控制

68f724bad5a33d9a9f6bd2ca7369ecb7.pngSession控制

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()

}

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.ServeJSON();

}

//退出

type LogoutController struct {

beego.Controller

}

//登录退出功能

func (c *LogoutController) Post() {

v := c.GetSession("loginuser")

islogin:=false

if v != nil {

//删除指定的session

c.DelSession("loginuser")

//销毁全部的session

c.DestroySession()

islogin=true

fmt.Println("当前的session:")

fmt.Println(c.CruSession)

}

c.Data["json"]=map[string]interface{}{"islogin":islogin};

c.ServeJSON();

}

5>     新建一个Login.html页面,作为展示使用

首页 - 用户列表页面

用户名:

密码:

登陆

退出

//登陆功能

function login(){

$.ajax({

type:'post',

url:'/Home/Login',

data:{

"name":$("#name").val(),

"pwd":$("#pwd").val()

},

success:function(result){

if(result.islogin==0){

$("#status").html("登陆成功")

}else if(result.islogin==1){

$("#status").html("用户名错误")

} else if(result.islogin==2){

$("#status").html("密码错误")

}

}

})

}

//登出功能

function logout(){

$.ajax({

type:'post',

url:'/Home/Logout',

data:{},

success:function(result){

if(result.islogin){

$("#status").html("登出成功");

}else {

$("#status").html("登出失败");

}

}

})

}

6>     在路由中添加控制器,编译项目,测试运行

package routers

import (

"BeegoLearn/controllers"

"github.com/astaxie/beego"

)

func init() {

//默认的

beego.Router("/", &controllers.MainController{})

//JS分页

beego.Router("/Home/PageData", &controllers.UserController{})

beego.Router("/Home/PageNextData", &controllers.YonghuController{})

//Bootstrap运用

beego.Router("/Home/Index", &controllers.PageController{})

//Easyui使用

beego.Router("/Home/EasyUI", &controllers.EasyUIController{})

beego.Router("/Home/EasyUIData", &controllers.EasyUIDataController{})

//文件的上传下载

beego.Router("/Home/FileOpt", &controllers.FileOptUploadController{})

beego.Router("/Home/FileDown", &controllers.FileOptDownloadController{})

//文件的创建,写入,读取,删除

beego.Router("/Home/FileRead", &controllers.ReadController{})

beego.Router("/Home/FileWrite", &controllers.WriteController{})

beego.Router("/Home/FileCreate", &controllers.CreateController{})

beego.Router("/Home/FileDelete", &controllers.DeleteController{})

//Api接口部分

beego.Router("/api/Html", &controllers.ApiController{})

beego.Router("/api/GetJson", &controllers.ApiJsonController{})

beego.Router("/api/GetXml", &controllers.ApiXMLController{})

beego.Router("/api/GetJsonp", &controllers.ApiJsonpController{})

beego.Router("/api/GetDictionary", &controllers.ApiDictionaryController{})

beego.Router("/api/GetParams", &controllers.ApiParamsController{})

//session部分

beego.Router("/Home/Login", &controllers.LoginController{})

beego.Router("/Home/Logout", &controllers.LogoutController{})

}

7>     运行结果如下

7-1》页面的初始效果如下:

8ef86447aaf26b8ee71597f255e34fe1.png

7-2》输入用户名,密码,点击登陆按钮

f8048e75ea1653b8b40579c906c425a5.png

19aaaf533fbe5991ff11a3d81343a59d.png

7-3》点击退出按钮

8790d9c9d75678eb9832cb38f03cb7b5.png

57803e66571a69854d6f2574a4e48fd5.png

8>我的Beego学习笔记这个项目的代码已经上传到GitHub上面。具体的地址如下:https://github.com/weiyunhelong/BeegoLearn

下载下来之后,记得将mysql数据库的配置文件进行相应的修改,不然项目编译时通不过的哟!

9> 下一章讲布局页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值