gpt4 book ai didi

go - 如何在beego中获取controller之外的cookie和session

转载 作者:数据小太阳 更新时间:2023-10-29 03:18:03 24 4
gpt4 key购买 nike

我想在我的服务文件中获取和设置 cookie,但是代码“ctx.SetCookie()”总是出现错误“无效的内存地址或零指针取消引用”,请帮助我,提前致谢

我尝试了两种方法来处理这个问题,但还是有问题

方法一:

type security struct {
beego.Controller
}
...
func (s security) CheckToken(){
...

ctx.SetCookie("token","xxxxxxxx")
}

方法二:

import "github.com/astaxie/beego/context"

func (s security) CheckToken(){
...
ctx := context.NewContext()
ctx.SetCookie("token","xxxxxxxx")
}

panic :运行时错误:无效的内存地址或零指针取消引用[信号 SIGSEGV:分段违规代码=0x1 地址=0x10 pc=0x832639]

最佳答案

可以通过beego上下文对象的.SetCookie()方法设置cookie。上下文对象本身可以通过嵌入 beego.Controller 的任何 Controller 访问。

func (c *MainController) SetToken() {
c.Ctx.SetCookie("token", "xxxxxxxx")
}

func (c *MainController) GetToken() {
cookieValue := c.Ctx.GetCookie("token")
fmt.Println(cookieValue)
}

文档 https://beego.me/docs/module/context.md

更新 #1

I wanna to set cookie outside of controller

您需要做的是将 Controller 的上下文对象传递给特定的函数。例如:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com