Session控制

1>     Session常用来作为全局变量使用,比如记录当前登录的用户,或者页面之间传递数据使用.

2>     Beego框架内置了 session 模块,目前 session 模块支持的后端引擎包括 memory、cookie、file、mysql、redis、couchbase、memcache、postgres,用户也可以根据相应的 interface 实现自己的引擎。若是使用标红的部分,需要再下载对应的session包。

3>     在main.go代码中添加启用session方法。具体代码如下:

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "github.com/astaxie/beego/orm"
  6. _ "BeegoLearn/routers"
  7. "github.com/astaxie/beego"
  8. )
  9.  
  10. //初始化
  11. func init(){
  12. dbhost := beego.AppConfig.String("dbhost")
  13. dbport := beego.AppConfig.String("dbport")
  14. dbuser := beego.AppConfig.String("dbuser")
  15. dbpassword := beego.AppConfig.String("dbpassword")
  16. db := beego.AppConfig.String("db")
  17.  
  18. //注册mysql Driver
  19. orm.RegisterDriver("mysql", orm.DRMySQL)
  20. //构造conn连接
  21. //用户名:密码@tcp(url地址)/数据库
  22. conn := dbuser + ":" + dbpassword + "@tcp(" + dbhost + ":" + dbport + ")/" + db + "?charset=utf8"
  23. //注册数据库连接
  24. orm.RegisterDataBase("default", "mysql", conn)
  25.  
  26. fmt.Printf("数据库连接成功!%s\n", conn)
  27. }
  28.  
  29. func main() {
  30. o := orm.NewOrm()
  31. o.Using("default") // 默认使用 default,你可以指定为其他数据库
  32. //启用Session
  33. beego.BConfig.WebConfig.Session.SessionOn = true
  34. beego.Run()
  35. }

  

4>     新建一个login.go控制器,编写session的逻辑业务

  1. package controllers
  2.  
  3. import (
  4. "fmt"
  5. "github.com/astaxie/beego"
  6. )
  7.  
  8. type LoginController struct {
  9. beego.Controller
  10. }
  11. //登录页面
  12. func (c *LoginController) Get() {
  13. c.TplName = "login.html"
  14. }
  15. //登录功能
  16. func (c *LoginController) Post() {
  17. name:=c.GetString("name")
  18. pwd:=c.GetString("pwd")
  19. islogin:=0
  20. if name=="admin" && pwd=="123456"{
  21. c.SetSession("loginuser", "adminuser")
  22. fmt.Println("当前的session:")
  23. fmt.Println(c.CruSession)
  24. }else if name!="admin"{
  25. islogin=1
  26. }else if pwd!="123456"{
  27. islogin=2
  28. }
  29. c.Data["json"]=map[string]interface{}{"islogin":islogin};
  30. c.ServeJSON();
  31. }
  32. //退出
  33. type LogoutController struct {
  34. beego.Controller
  35. }
  36. //登录退出功能
  37. func (c *LogoutController) Post() {
  38. v := c.GetSession("loginuser")
  39. islogin:=false
  40. if v != nil {
  41. //删除指定的session
  42. c.DelSession("loginuser")
  43. //销毁全部的session
  44. c.DestroySession()
  45. islogin=true
  46.  
  47. fmt.Println("当前的session:")
  48. fmt.Println(c.CruSession)
  49. }
  50. c.Data["json"]=map[string]interface{}{"islogin":islogin};
  51. c.ServeJSON();
  52. }

  

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

  1. <!DOCTYPE html>
  2.  
  3. <html>
  4.       <head>
  5.         <title>首页 - 用户列表页面</title>
  6.         <link rel="shortcut icon" href="/static/img/favicon.png" />
  7. <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css"/>
  8. <script type="text/javascript" src="/static/js/jquery-2.1.1.min.js"></script> 
  9. <script type="text/javascript" src="/static/bootstrap/js/bootstrap.min.js"></script> 
  10.       </head>    
  11.     <body>
  12. <div class="container">
  13. <div class="form-group">
  14. <label for="text">用户名:</label>
  15. <input type="text" class="form-control" id="name" placeholder="用户名">
  16. </div>
  17. <div class="form-group">
  18. <label for="text">密码:</label>
  19. <input type="text" class="form-control" id="pwd" placeholder="密码">
  20. </div>
  21. <div class="form-group">
  22. <button class="btn btn-primary" onclick="login()">登陆</button>
  23. <button class="btn btn-default" onclick="logout()">退出</button>
  24. </div>
  25. <div>
  26. <label id="status"></label>
  27. </div>
  28. </div>
  29. <!--JS部分-->
  30. <script type="text/javascript">
  31. //登陆功能
  32. function login(){
  33. $.ajax({
  34. type:'post',
  35. url:'/Home/Login',
  36. data:{
  37. "name":$("#name").val(),
  38. "pwd":$("#pwd").val()
  39. },
  40. success:function(result){
  41. if(result.islogin==0){
  42. $("#status").html("登陆成功")
  43. }else if(result.islogin==1){
  44. $("#status").html("用户名错误")
  45. } else if(result.islogin==2){
  46. $("#status").html("密码错误")
  47. }
  48. }
  49. })
  50. }
  51. //登出功能
  52. function logout(){
  53. $.ajax({
  54. type:'post',
  55. url:'/Home/Logout',
  56. data:{},
  57. success:function(result){
  58. if(result.islogin){
  59. $("#status").html("登出成功");
  60. }else {
  61. $("#status").html("登出失败");
  62. }
  63. }
  64. })
  65. }
  66. </script>
  67.     </body>
  68. </html>

  

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

  1. package routers
  2.  
  3. import (
  4. "BeegoLearn/controllers"
  5. "github.com/astaxie/beego"
  6. )
  7.  
  8. func init() {
  9. //默认的
  10. beego.Router("/", &controllers.MainController{})
  11. //JS分页
  12. beego.Router("/Home/PageData", &controllers.UserController{})
  13. beego.Router("/Home/PageNextData", &controllers.YonghuController{})
  14. //Bootstrap运用
  15. beego.Router("/Home/Index", &controllers.PageController{})
  16. //Easyui使用
  17. beego.Router("/Home/EasyUI", &controllers.EasyUIController{})
  18. beego.Router("/Home/EasyUIData", &controllers.EasyUIDataController{})
  19. //文件的上传下载
  20. beego.Router("/Home/FileOpt", &controllers.FileOptUploadController{})
  21. beego.Router("/Home/FileDown", &controllers.FileOptDownloadController{})
  22. //文件的创建,写入,读取,删除
  23. beego.Router("/Home/FileRead", &controllers.ReadController{})
  24. beego.Router("/Home/FileWrite", &controllers.WriteController{})
  25. beego.Router("/Home/FileCreate", &controllers.CreateController{})
  26. beego.Router("/Home/FileDelete", &controllers.DeleteController{})
  27. //Api接口部分
  28. beego.Router("/api/Html", &controllers.ApiController{})
  29. beego.Router("/api/GetJson", &controllers.ApiJsonController{})
  30. beego.Router("/api/GetXml", &controllers.ApiXMLController{})
  31. beego.Router("/api/GetJsonp", &controllers.ApiJsonpController{})
  32. beego.Router("/api/GetDictionary", &controllers.ApiDictionaryController{})
  33. beego.Router("/api/GetParams", &controllers.ApiParamsController{})
  34. //session部分
  35. beego.Router("/Home/Login", &controllers.LoginController{})
  36. beego.Router("/Home/Logout", &controllers.LogoutController{})
  37. }

  

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. mysql在windows(含客户端工具)及linux(yum)环境下安装

    下载 地址:https://dev.mysql.com/downloads/ windows安装包下载 linux安装包下载 https://dev.mysql.com/downloads/mysql ...

  2. 【电脑】xshell报:需要Xmanager软件来处理X11转发请求

    https://www.netsarang.com/zh/xmanager/ 下载了就好了 我的图片出不来,下了就好了.

  3. python基础_格式化输出(%用法和format用法)(转载)

    python基础_格式化输出(%用法和format用法) 目录 %用法 format用法 %用法 1.整数的输出 %o -- oct 八进制%d -- dec 十进制%x -- hex 十六进制 &g ...

  4. CF264D - Colorful Stones 题解

    题面 官方题解 模拟赛题解 题解概述: 定义符号A~B表示序列A是序列B的子序列,A!~B反之. 设操作序列为I,则有A~I,B!~I,C~I,D!~I. 可得出条件①B!~C且D!~A,所以我们只要 ...

  5. 前端,DJ

    Vue模块 1.Vue都有哪些指令,简单说说? """ Vue里面常见指令有文本指令:v-text.v-html,属性指令:v-bind,方法指令:v-on,条件指令:v ...

  6. Spring Boot 知识笔记(创建maven项目、HTTP接口)

    一.使用Maven手工创建SpringBoot应用(IDEA) 1.  点击File——New——Project——Maven——Next,填写相关信息,创建项目. 2.  在pom.xml中添加相关 ...

  7. vb.net 获取文件的版本号

    dim strVersion =  Reflection.Assembly.LoadFrom(strFileName).GetName().Version.ToString()

  8. 认识随机函数rand()和srand(unsigned int )

    rand函数 int rand( void ); 函数名:   rand 功   能:   随机数发生器 用   法:   int rand(void); 所在头文件: stdlib.h 函数说明 : ...

  9. Javascript Asynchronous Investigation

    介绍 同步任务:在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务: 异步任务:不进入主线程,而进入任务队列中的任务,只有任务队列通知主线程,某个异步任务可以执行了,这个任务才会进入 ...

  10. Docker 部署web项目

    1.查找Docker Hub上的tomcat镜像 # docker search tomcat   2.拉取官方的镜像 # docker pull tomcat   提示:Using default ...