Beego 学习笔记14:Session控制
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控制的更多相关文章
- Beego学习笔记
Beego学习笔记 Go 路由(Controller) 路由就是根据用户的请求找到需要执行的函数或者controller. Get /v1/shop/nike ShopController Get D ...
- mybatis学习笔记(14)-查询缓存之中的一个级缓存
mybatis学习笔记(14)-查询缓存之中的一个级缓存 标签: mybatis mybatis学习笔记14-查询缓存之中的一个级缓存 查询缓存 一级缓存 一级缓存工作原理 一级缓存測试 一级缓存应用 ...
- 【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计
[转] C#学习笔记14——Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计 .NET Framework 命名空 ...
- Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法
Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法 Ext.Net GridPanel可以进行Group操作,例如: 如何启用Grouping功能呢?只需要在Grid ...
- Beego学习笔记——Logs
日志处理 这是一个用来处理日志的库,它的设计思路来自于database/sql,目前支持的引擎有file.console.net.smtp,可以通过如下方式进行安装: go get github.co ...
- Beego学习笔记——Config
配置文件解析 这是一个用来解析文件的库,它的设计思路来自于database/sql,目前支持解析的文件格式有ini.json.xml.yaml,可以通过如下方式进行安装: go get github. ...
- Beego学习笔记——开始
beego简介 beego是一个快速开发Go应用的http框架,他可以用来快速开发API.Web.后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado.sinatra.fl ...
- SQL反模式学习笔记14 关于Null值的使用
目标:辨别并使用Null值 反模式:将Null值作为普通的值,反之亦然 1.在表达式中使用Null: Null值与空字符串是不一样的,Null值参与任何的加.减.乘.除等其他运算,结果都是Null: ...
- golang学习笔记14 golang substring 截取字符串
golang学习笔记14 golang substring 截取字符串golang 没有java那样的substring函数,但支持直接根据 index 截取字符串mystr := "hel ...
随机推荐
- mysql在windows(含客户端工具)及linux(yum)环境下安装
下载 地址:https://dev.mysql.com/downloads/ windows安装包下载 linux安装包下载 https://dev.mysql.com/downloads/mysql ...
- 【电脑】xshell报:需要Xmanager软件来处理X11转发请求
https://www.netsarang.com/zh/xmanager/ 下载了就好了 我的图片出不来,下了就好了.
- python基础_格式化输出(%用法和format用法)(转载)
python基础_格式化输出(%用法和format用法) 目录 %用法 format用法 %用法 1.整数的输出 %o -- oct 八进制%d -- dec 十进制%x -- hex 十六进制 &g ...
- CF264D - Colorful Stones 题解
题面 官方题解 模拟赛题解 题解概述: 定义符号A~B表示序列A是序列B的子序列,A!~B反之. 设操作序列为I,则有A~I,B!~I,C~I,D!~I. 可得出条件①B!~C且D!~A,所以我们只要 ...
- 前端,DJ
Vue模块 1.Vue都有哪些指令,简单说说? """ Vue里面常见指令有文本指令:v-text.v-html,属性指令:v-bind,方法指令:v-on,条件指令:v ...
- Spring Boot 知识笔记(创建maven项目、HTTP接口)
一.使用Maven手工创建SpringBoot应用(IDEA) 1. 点击File——New——Project——Maven——Next,填写相关信息,创建项目. 2. 在pom.xml中添加相关 ...
- vb.net 获取文件的版本号
dim strVersion = Reflection.Assembly.LoadFrom(strFileName).GetName().Version.ToString()
- 认识随机函数rand()和srand(unsigned int )
rand函数 int rand( void ); 函数名: rand 功 能: 随机数发生器 用 法: int rand(void); 所在头文件: stdlib.h 函数说明 : ...
- Javascript Asynchronous Investigation
介绍 同步任务:在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务: 异步任务:不进入主线程,而进入任务队列中的任务,只有任务队列通知主线程,某个异步任务可以执行了,这个任务才会进入 ...
- Docker 部署web项目
1.查找Docker Hub上的tomcat镜像 # docker search tomcat 2.拉取官方的镜像 # docker pull tomcat 提示:Using default ...