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

  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)\Go\bin\src\github.com\beego\bee 在自己的go安装目录进入之后执行 go build 就生成了在bin目录下生成了bee.exe,生成bee.exe的目录在 D:\Program Files (x86)\Go\bin\bin 也是自己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/xxx
        beego.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中的token
    token, ok := c.Request.Header["Access-Token"]
 //获取header中的sing
    sing, 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.RequestURI
    is := 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不匹配所以登录就被过滤了,这样就算完成了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邀星月为媒

现在的努力是为小时候吹过的NB

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值