iris当中session的使用
代码里面都注释好了
package main
import (
"github.com/kataras/iris"
"github.com/kataras/iris/context"
"github.com/kataras/iris/sessions"
)
var (
USERNAME = "userName"
ISLOGIN = "isLogin"
)
func main(){
app := iris.New()
sessionID := "mySession"
//创建session并进行使用 返回的是sessions
sess := sessions.New(sessions.Config{
Cookie: sessionID,
})
//用户登录
app.Post("/login", func(context context.Context) {
path := context.Path()
app.Logger().Info("请求路径",path)
userName := context.PostValue("name")
passwd := context.PostValue("pwd")
if userName == "huxiaobai" && passwd == "123"{
//创建session实例
session := sess.Start(context)
//往session当中存入用户名称
session.Set(USERNAME,userName)
//往session当中存入登录状态
session.Set(ISLOGIN,true)
//all := session.GetAll()
context.WriteString("账户登录成功!")
}else{
session := sess.Start(context)
session.Set(ISLOGIN,false)
context.WriteString("账户登录失败,请重新尝试!")
}
})
//用户退出登录
app.Get("/logout", func(context context.Context) {
path := context.Path()
app.Logger().Info("退出登录 path:" + path)
//创建session实例
session := sess.Start(context)
//删除session里面的值
session.Delete(ISLOGIN)
session.Delete(USERNAME)
context.WriteString("退出登录成功!")
})
//执行验证
app.Get("/query", func(context context.Context) {
path := context.Path()
app.Logger().Info("查询信息path"+path)
//创建session实例
session := sess.Start(context)
//获取session里面的值
//String:字符串类型
//session.GetString()
//Int:无符号整形 及系列相关单位的同类型
//session.GetInt()
//Boolean:布尔值类型
//session.GetBoolean()
//Float:单精度数值类型 及系列相关单位的同类型
//session.GetFloat()
//interface{}:接口 即任意数据结构类型
//session.GetFlash()
isLogin,err := session.GetBoolean(ISLOGIN)
if err != nil {
context.WriteString("账户未登录,请先登录")
return
}
if isLogin {
app.Logger().Info("账户已经登录!")
context.WriteString("账户已经登录!")
} else {
app.Logger().Info("账户未登录!")
context.WriteString("账户未登录!")
}
})
app.Run(iris.Addr(":8015"),iris.WithoutServerError(iris.ErrServerClosed))
}