素材巴巴 > 程序开发 >

go ---- beego框架过滤器使用

程序开发 2023-09-10 20:01:37
  1. 下载安装beego和bee工具

beego 安装

go get github.com/astaxie/beego

bee工具

go get github.com/beego/bee/v2
  1. bee工具如果安装完成后在go的bin目录下未生成bee.exe,进入D:Program Files (x86)Gobinsrcgithub.combeegobee 在自己的go安装目录进入之后执行 go build 就生成了在bin目录下生成了bee.exe,生成bee.exe的目录在 D:Program Files (x86)Gobinbin 也是自己go的安装目录下.生成后将此目录加入到环境变量中即可执行

  1. 执行如下命令创建beego项目

bee new demo
  1. 运行beego项目用 bee run 命令

  1. 接下来是过滤器使用和注解路由

找到router目录下的router.go文件

先引入路由的包,我们创建的是web项目非api项目,引入的包是 beego "github.com/beego/beego/v2/server/web"

import ("demo/controllers/api"v1 "demo/controllers/api/v1"github.com/beego/beego/v2/adapter/orm"beego "github.com/beego/beego/v2/server/web""github.com/beego/beego/v2/server/web/context"
 )
  1. 使用路由

func init() {//路由前引用 表示v1路径下的所有接口beego.InsertFilter("/v1/*", beego.BeforeRouter, FilterFunc)//v1路由组 namspace创建路由组ns1 := beego.NewNamespace("/v1",//用户 包含用户文件下的  此时匹配到的路由应该是 /v1/user/xxxbeego.NSNamespace("/user", beego.NSInclude(&v1.UserController{})),)beego.AddNamespace(ns1)beego.Router("/v1", &api.MainController{})
 }
  1. 控制器端只需要通过注解就可以生成路由 避坑[Post]中首字母必须大写

// 用户登录
 // @router /login/do [Post]
 func (this *UserController) LoginDo() {}

接下来是过滤器中的代码如下,就是简单的获取heder头中传递的数据验证是否登录

var FilterFunc = func(c *context.Context) {//获取header中的tokentoken, ok := c.Request.Header["Access-Token"]//获取header中的singsing, oks := c.Request.Header["Sing"]//引入orm包    o := orm.NewOrm()var user UserInfo//orm查询语句err := o.Raw("SELECT token,id FROM user WHERE token = ? AND id = ?", token, sing).QueryRow(&user)//获取当前url 下面处理url去除不需要登录的地址url := c.Request.RequestURIis := url == "/v1/user/login/do" || url == "/v1/user/register/save" || url == "/v1"if is == false {if !ok || !oks || err != nil {c.Output.JSON(ReturnError(4000, "请先登录"), true, false)}}}

如上完成后看下效果

然后后面需要验证用户是否登录的接口就会在过滤器中给过滤掉

只要在header头中传递未过期的token和sing(签名即可)

这两个token和上图生成的token不匹配所以登录就被过滤了,这样就算完成了


标签:

上一篇: vue模拟另一个按钮点击事件 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。