12年开始接触 golang ,当年还经常跟 golang的无闻大神 学习。现在有点后悔当初没坚持下来学习。
导致错误的原因是,session一开始我存储的string。后来改存储对象,再编译也通过了。
只是一访问接口就抛出这个:
gob: name not registered for interface: "*models.User"
接着 百度 出来的解决方案:
gob.Register(models.User{})
这种本身应该没什么问题,但是本地还是同样的错误。( 可能版本不同,传参变了 )
后来注意到“*models.User”,说的是指针
于是改成:
gob.Register(&models.User{})
后访问正常
BTW
本地环境介绍: go 1.16, astaxie/beego 1.12.3,macbook pro m1,redis+session,
show you code
package main
import (
"admin.zc.me/components"
"admin.zc.me/controllers"
"admin.zc.me/models"
_ "admin.zc.me/routers"
"encoding/gob"
"github.com/astaxie/beego"
_ "github.com/astaxie/beego/session/redis"
)
func init() {
beego.ErrorController(&controllers.ErrController{})
components.InitLogger()
models.DbConnect()
initSession()
}
func initSession() {
gob.Register(&models.User{})
address := beego.AppConfig.String("redis_address")
beego.BConfig.WebConfig.Session.SessionProvider = "redis"
beego.BConfig.WebConfig.Session.SessionProviderConfig = address
}
func main() {
beego.Run()
}