我想在服务文件中获取并设置cookie,但是代码“ctx.SetCookie()”始终会收到错误消息“无效的内存地址或nil指针取消引用”,请帮助我,谢谢。
我尝试了两种方法来解决此问题,但仍然存在问题
方法1:
type security struct {
beego.Controller
}
...
func (s security) CheckToken(){
...
ctx.SetCookie("token","xxxxxxxx")
}
方法2:
import "github.com/astaxie/beego/context"
func (s security) CheckToken(){
...
ctx := context.NewContext()
ctx.SetCookie("token","xxxxxxxx")
}
紧急:运行时错误:无效的内存地址或nil指针取消引用
[信号SIGSEGV:细分违规代码= 0x1 addr = 0x10 pc = 0x832639]
最佳答案
设置cookie可以通过beego上下文对象的.SetCookie()
方法完成。上下文对象本身可以通过嵌入beego.Controller
的任何控制器进行访问。
func (c *MainController) SetToken() {
c.Ctx.SetCookie("token", "xxxxxxxx")
}
func (c *MainController) GetToken() {
cookieValue := c.Ctx.GetCookie("token")
fmt.Println(cookieValue)
}
Doc https://beego.me/docs/module/context.md
更新#1
我想在控制器之外设置cookie
您需要做的是将控制器的上下文对象传递到特定的函数中。例如:
package models
import "github.com/astaxie/beego/context"
func SetCookieFromHere(ctx *context.Context) {
ctx.SetCookie("token", "xxxxxxxx")
}
package controllers
import "yourpackage/models"
func (c *MainController) SetToken() {
models.SetCookieFromHere(c.Ctx)
}
关于go - 如何在beego中的 Controller 外部获取cookie和 session ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58054667/