大佬好,算是两个问题吧, 1、哪里有个1.12.3的文档哈? 2、请允许我叙述下经过,顺便大佬看下是不是这个adapter是不是有问题哈 之前一直在学习beego也一直升级,结果这次升级2.0,悲剧了,路由里用了命名空间,直接悲剧不认了
package routers
import (
"beegoxiaomi/controllers/api"
beego "github.com/beego/beego/v2/adapter"
)
func init() {
//beego.Router("/api/login", &api.LoginController{})
ns :=
beego.NewNamespace("/api",
beego.NSRouter("/login", &api.LoginController{}),
)
//注册namespace
beego.AddNamespace(ns)
}
好在看了官方文档,修改引用包 beego "github.com/beego/beego/v2/adapter" 换为 "github.com/beego/beego/v2/server/web" 能用了,变成如下,可后面更大的问题出现了
package routers
import (
"beegoxiaomi/controllers/api"
"github.com/beego/beego/v2/server/web"
)
func init() {
//beego.Router("/api/login", &api.LoginController{})
ns :=
web.NewNamespace("/api",
web.NSRouter("/login", &api.LoginController{}),
)
//注册namespace
web.AddNamespace(ns)
}
然后说更大的问题哈
package routers
import (
"beegoxiaomi/controllers/admin"
"beegoxiaomi/models"
"context"
beego "github.com/beego/beego/v2/adapter"
"github.com/beego/beego/v2/context"
"github.com/beego/beego/v2/server/web"
)
func init() {
// beego.Router("/admin/login", &admin.LoginController{})
// beego.Router("/admin/focus", &admin.FocusController{})
// beego.Router("/admin/manageer", &admin.AdminController{})
ns :=
web.NewNamespace("/"+beego.AppConfig.String("adminPath"),
// 中间件 匹配路由前会做权限验证
// 注意引用的包:"github.com/beego/beego/v2/adapter/context"
web.NSBefore(func(ctx *context.Context) {
// fmt.Println("我是一个中间件,匹配路由前执行")
// beego.Info(ctx.Request.URL)
pathname := ctx.Request.URL.String()
userinfo, ok := ctx.Input.Session("userinfo").(models.Manager) //类型断言
if !(ok && userinfo.Username != "") {
if pathname != "/"+beego.AppConfig.String("adminPath")+"/login" && pathname != "/"+beego.AppConfig.String("adminPath")+"/login/doLogin" {
ctx.Redirect(302, "/"+beego.AppConfig.String("adminPath")+"/login")
}
}
}),
web.NSRouter("/", &admin.MainController{}),
)
//注册namespace
web.AddNamespace(ns)
}
这里
// 注意引用的包:"github.com/beego/beego/v2/adapter/context"
web.NSBefore(func(ctx *context.Context) {
原来引用的是 github.com/astaxie/beego/context 之前按IT营大地老师教的教程,运行没有问题,但现在
web.NSBefore(func(ctx *context.Context)
这里完全就不知道该怎么整了?是不让使用自执行方法?还是这个context找不到?我记得大地老师讲得时候就重点说个这个不能引用go本身的context 各种试也没招 小白新学3个月,请大佬指下,费心了,多谢!