beego实现用户未登录跳转到登录页面

lijingtian · 2018-11-21 19:13:26 · 3804 次点击 · 预计阅读时间 2 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2018-11-21 19:13:26 的文章,其中的信息可能已经有所发展或是发生改变。

主要涉及内容:

  1. 自动路由
  2. 过滤器
  3. session控制
  4. 表单请求数据处理

main.go

//这里应该加载 "github.com/astaxie/beego/context" 否则会加载src/context
//过滤器
var FilterUser = func(ctx *context.Context){
    _, ok := ctx.Input.Session("uid").(string)
    ok2 := strings.Contains(ctx.Request.RequestURI, "/login")
    if !ok && !ok2{
        ctx.Redirect(302, "/login/index")
    }
}

func main() {
    //注册过滤器
    beego.InsertFilter("/*", beego.BeforeRouter, FilterUser)
    //打开session
    beego.BConfig.WebConfig.Session.SessionOn = true
    setWebAutoRouter()
    beego.Run()
}

//注册自动路由
func setWebAutoRouter(){
    beego.AutoRouter(&controllers.TestController{})
    beego.AutoRouter(&controllers.LoginController{})
}

loginController.go

type LoginController struct{
    beego.Controller
}

type user struct {
    Id int `form:"-"`
    Name string `form:"username"`
    Age int `form:"age"`
    Email string
}

func (this *LoginController) Index(){
    //获取session值
    this.Data["uid"] = this.GetSession("uid")
    this.TplName = "login.html"
}

func (this *LoginController) Register(){
    u := user{}
    //处理表单提交的数据
    if err := this.ParseForm(&u); err != nil{
        fmt.Println(err)
    } else {
        //注册session值
        this.SetSession("uid", u.Name)
    }
    this.Data["uid"] = this.GetSession("uid")
    this.TplName = "login.html"
}

testController.go

type TestController struct{
    beego.Controller
}

func (this *TestController) Index(){
    paramMap := this.Ctx.Input.Params()
    //获取RESTFUL风格的参数
    //此时的URL为 localhost:8080/test/index/aaa/bbb
    this.Data["Website"] = paramMap["0"]        //aaa
    this.Data["Email"] = paramMap["1"]        //bbb

    v := this.GetSession("uid")
    this.Data["uid"] = v.(string)

    this.TplName = "test.html"
}

HTML代码略


参考网址:
https://beego.me/docs/intro/
https://www.jianshu.com/p/f583edfc7a1a


有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3804 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传