本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

自定义过滤器

需要登录才能访问的

/cms/user/add /cms/user/list /cms/user/edit /cms/book/add

不需要登录可以访问:

/ /login /register

beego.InsertFilter(pattern string, position int, filter FilterFunc, params …bool)

  • 第一个参数表示过滤的路由规则,支持通配符
  • 第二个参数就是过滤器的位置,beego支持的有5种
  • BeforeStatic 静态地址之前
  • BeforeRouter 寻找路由之前
  • BeforeExec 找到路由之后,开始执行相应的 Controller 之前
  • AfterExec 执行完 Controller 逻辑之后执行的过滤器
  • FinishRouter 执行完逻辑之后执行的过滤器
  • 第三个参数为执行的函数
  • func(*context.Context) 参数必须是context.Context , context是beego包下的
  • 其他参数:使用默认得到true即可

示例:

func main() { // 过滤器 beego.InsertFilter("/*", beego.BeforeRouter, controllers.LoginSpider1Filter) beego.Run() } func LoginSpider1Filter(ctx *context.Context) { // 获取session id := ctx.Input.Session("spider1_uid") if id == nil { // 说明未登录 ctx.Redirect(302,"/main/spider1/to_login") // 路由反转:beego.URLFor("TestController.Get") } }

注意:使用 session 的 Filter 必须在 BeforeStatic 之后才能获取,因为 session 没有在这之前初始化。

1729人已阅读,今天你学习了吗?

添加新回复