首页 > 其他 > 详细

[beego学习] 过滤器

时间:2021-05-13 20:12:34      阅读:15      评论:0      收藏:0      [点我收藏+]

过滤器

官方解释:beego 支持自定义过滤中间件,例如安全验证,强制跳转等。
可以简单理解为在请求过程中的不同位置可加入钩子函数。
文档地址:https://beego.me/docs/mvc/controller/filter.md

举例说明,加入系统中有一个url (xxxx/cms/Manager) 需要验证用户是否登录过(已登录的,后端设置了session)。
1.在LoginPage中加入session

func (c *LoginController) Post(){
    var user LoginUser
    err := c.ParseForm(&user)
    if err != nil{
        fmt.Println("error")
    }

    fmt.Println(user.Username)
    fmt.Println(user.Pwd)

    c.SetSession("username", user.Username)    //设置session
    c.Ctx.WriteString("Login success")
}

2.在main.go中加入过滤器

func main() {
    //过滤器
    beego.InsertFilter("/cms/*", beego.BeforeRouter, filters.CMSFilter)    // 使用 session 的 Filter 必须在 BeforeStatic 之后才能获取,因为 session 没有在这之前初始化。
    beego.Run()
}

3.添加filter函数

package filters

import (
    "github.com/astaxie/beego/context"
)

func CMSFilter(ctx *context.Context){
    username := ctx.Input.Session("username")
    if username == nil{
        ctx.WriteString("没有登陆")
    }
}

[beego学习] 过滤器

原文:https://www.cnblogs.com/laughingpig/p/14764311.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!