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

  

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页面,作为展示使用

<!DOCTYPE html>
 
<html>
      <head>
        <title>首页 - 用户列表页面</title>
        <link rel="shortcut icon" href="/static/img/favicon.png" />
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css"/>
<script type="text/javascript" src="/static/js/jquery-2.1.1.min.js"></script> 
<script type="text/javascript" src="/static/bootstrap/js/bootstrap.min.js"></script> 
      </head>    
    <body>
<div class="container">
<div class="form-group">
<label for="text">用户名:</label>
<input type="text" class="form-control" id="name" placeholder="用户名">
</div>
<div class="form-group">
<label for="text">密码:</label>
<input type="text" class="form-control" id="pwd" placeholder="密码">
</div>
<div class="form-group">
<button class="btn btn-primary" onclick="login()">登陆</button>
<button class="btn btn-default" onclick="logout()">退出</button>
</div>
<div>
<label id="status"></label>
</div>
</div>
<!--JS部分-->
<script type="text/javascript">
//登陆功能
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("登出失败");
}
}
})
}
</script>
    </body>
</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》页面的初始效果如下:

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

7-3》点击退出按钮

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

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

9> 下一章讲布局页面

Beego 学习笔记14:Session控制的更多相关文章

  1. Beego学习笔记

    Beego学习笔记 Go 路由(Controller) 路由就是根据用户的请求找到需要执行的函数或者controller. Get /v1/shop/nike ShopController Get D ...

  2. mybatis学习笔记(14)-查询缓存之中的一个级缓存

    mybatis学习笔记(14)-查询缓存之中的一个级缓存 标签: mybatis mybatis学习笔记14-查询缓存之中的一个级缓存 查询缓存 一级缓存 一级缓存工作原理 一级缓存測试 一级缓存应用 ...

  3. 【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计

    [转] C#学习笔记14——Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计   .NET Framework 命名空 ...

  4. Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法

    Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法 Ext.Net GridPanel可以进行Group操作,例如: 如何启用Grouping功能呢?只需要在Grid ...

  5. Beego学习笔记——Logs

    日志处理 这是一个用来处理日志的库,它的设计思路来自于database/sql,目前支持的引擎有file.console.net.smtp,可以通过如下方式进行安装: go get github.co ...

  6. Beego学习笔记——Config

    配置文件解析 这是一个用来解析文件的库,它的设计思路来自于database/sql,目前支持解析的文件格式有ini.json.xml.yaml,可以通过如下方式进行安装: go get github. ...

  7. Beego学习笔记——开始

    beego简介 beego是一个快速开发Go应用的http框架,他可以用来快速开发API.Web.后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado.sinatra.fl ...

  8. SQL反模式学习笔记14 关于Null值的使用

    目标:辨别并使用Null值 反模式:将Null值作为普通的值,反之亦然 1.在表达式中使用Null: Null值与空字符串是不一样的,Null值参与任何的加.减.乘.除等其他运算,结果都是Null: ...

  9. golang学习笔记14 golang substring 截取字符串

    golang学习笔记14 golang substring 截取字符串golang 没有java那样的substring函数,但支持直接根据 index 截取字符串mystr := "hel ...

随机推荐

  1. 07-numpy-笔记-join

    字符串.join(字符串序列) 一目了然: #!/usr/bin/python # -*- coding: UTF-8 -*- str = "-"; seq = ("a& ...

  2. history.back(-1)和history.go(-1)的区别 (有错误)

    返回一个页面方法有很多,就好比给返回按钮绑定一个URL,但是如果一个页面可以从很多页面到达,那么这个页面返回的页面就不是固定的,那么绑定固定的URL显然不妥. 两个方法的区别 既然history.ba ...

  3. 使用plv8+ shortid npm包构建一个短唯一id服务

    plv8 是一个很强大的pg 扩展插件,我们可以直接额使用js 增强sql ,shortid 是一个用来生成短连接id 很方便的类库 因为shortid 是一个npm 模块,我们需要使用一种方法使用r ...

  4. pytest--命令行常用参数

    前戏 在python中,大家听到最多的单元测试框架就是unittest和pytest了,而pytest有很多的功能,甩unittest几条街 我们在使用pytest时,要遵循pytest的命名规则: ...

  5. 洛谷p3916图的遍历题解

    题面 思路: 反向建边,dfs艹咋想出来的啊 倒着遍历,如果你现在遍历到的这个点已经被标记了祖先是谁了 那么就continue掉 因为如果被标记了就说明前面已经遍历过了 而我们的顺序倒着来的 前边的一 ...

  6. Spring Cloud @RefreshScope 原理是什么?

    要清楚RefreshScope,先要了解Scope Scope(org.springframework.beans.factory.config.Scope)是Spring 2.0开始就有的核心的概念 ...

  7. vim常用命令整理

    #创建文件 vim test.txt vi test.txt touch test.txt #在vim中要想退出,先按[esc],再输入如下命令 [:wq]保存并退出 [:q]退出,未修改 [:q!] ...

  8. 转载:Linux命令行快捷键

    常用 Ctrl + 左右键:在单词之间跳转 Ctrl + A:跳到本行的行首 Ctrl + E:跳到页尾 Ctrl + U:删除当前光标前面的所有文字(还有剪切功能) Ctrl + K:删除当前光标后 ...

  9. 将Javabean转化JSONObject为对象

    JSONObject.parseObject(JSONObject.toJSON(obj).toString()):

  10. eDiary

    多年过去,您经历了BBS.论坛.博客.推特.微博 ...,但在电脑的某个 角落,eDiary始终为你守护发自你内心的声音. eDiary的作用不仅仅在于写日记,您也可以用它来记流水帐.写工作日志, 记 ...