为了账号安全,请及时绑定邮箱和手机立即绑定

使用 beego 验证码:无效的内存地址或 nil 指针取消引用

使用 beego 验证码:无效的内存地址或 nil 指针取消引用

Go
偶然的你 2023-05-08 16:05:38
我想在beego下使用captcha生成验证码。但是它有错误invalid memory address or nil pointer dereference。有谁知道如何解决这个问题?谢谢。Request Method: GETRequest URL:    /accounts/forgotpasswordRemoteAddr: 127.0.0.1StackC:/Go/src/runtime/asm_amd64.s:573C:/Go/src/runtime/panic.go:505C:/Go/src/text/template/exec.go:137C:/Go/src/runtime/asm_amd64.s:573C:/Go/src/runtime/panic.go:505C:/Go/src/runtime/panic.go:63我的代码: conf\app.conf# Cache ProviderCacheProvider = redisCacheConnection = {"conn":"127.0.0.1:6379"}控制器\main.gopackage controllersimport ("github.com/astaxie/beego""github.com/astaxie/beego/cache"  "github.com/astaxie/beego/utils/captcha")var(    cpt *captcha.Captcha    CacheProvider string = beego.AppConfig.String("CacheProvider")    CacheConnection string = beego.AppConfig.String("CacheConnection"))func init() {  store, _ := cache.NewCache(CacheProvider, CacheConnection)  cpt = captcha.NewWithFilter("/accounts/captca/", store)}视图\忘记密码控制器\get.tpl<div class="w3-container w3-center">      <form method="post" id="mainForm"class="w3-container" style="margin-top:90px">        <div class="w3-card " style="    padding-left: 0px;        padding-right: 0px;    margin-top: 30px;">            <div class="w3-container">                <h1>Reset password</h1>            </div><div class="w3-container" style="    padding-bottom: 16px;">            {{create_captcha}}                <input type="text"  class="w3-input   "name="captcha"style="outline: none;">            <p style="text-align: left;margin-top: 0px;color:red">            {{if .Errors.Captcha}}                {{.Errors.Captcha}}{{else}}&zwnj;{{end}}</p>                <input type="submit" value="Request reset password" onclick="login()" class="w3-button w3-indigo w3-block w3-round-large">            </div>        </div>      </form>  </div>
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

刚刚在我的本地测试了你的代码。错误来自缓存创建部分。


store, err := cache.NewCache(CacheProvider, CacheConnection)

if err != nil {

    log.Fatal(err.Error())

    os.Exit(0)

}

要获取详细错误,请检查err从 返回的变量cache.NewCache()。此外,最好始终记录来自错误对象的任何可能错误,不要忽略它。


这是错误日志:


2018/11/14 11:13:24 缓存:未知适配器名称“redis”(忘记导入?)


发生上述错误是因为缓存包找不到redis适配器。那是因为你还没有导入包。因此,让我们尝试导入它,然后您的问题将得到解决。


import (

    "fmt"

    "log"

    "os"

    "github.com/astaxie/beego"

    "github.com/astaxie/beego/cache"

    "github.com/astaxie/beego/utils/captcha"


    _ "github.com/astaxie/beego/cache/redis" // <----- this one

)

由于我们不直接与缓存 redis 包交互,因此使用_.


查看完整回答
反对 回复 2023-05-08
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信