猿问

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

我想在beego下使用captcha生成验证码。但是它有错误invalid memory address or nil pointer dereference。有谁知道如何解决这个问题?谢谢。


Request Method: GET

Request URL:    /accounts/forgotpassword

RemoteAddr: 127.0.0.1

Stack

C:/Go/src/runtime/asm_amd64.s:573

C:/Go/src/runtime/panic.go:505

C:/Go/src/text/template/exec.go:137

C:/Go/src/runtime/asm_amd64.s:573

C:/Go/src/runtime/panic.go:505

C:/Go/src/runtime/panic.go:63

我的代码: conf\app.conf


# Cache Provider

CacheProvider = redis

CacheConnection = {"conn":"127.0.0.1:6379"}

控制器\main.go


package controllers


import (

"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>


偶然的你
浏览 134回答 1
1回答

拉风的咖菲猫

刚刚在我的本地测试了你的代码。错误来自缓存创建部分。store, err := cache.NewCache(CacheProvider, CacheConnection)if err != nil {&nbsp; &nbsp; log.Fatal(err.Error())&nbsp; &nbsp; os.Exit(0)}要获取详细错误,请检查err从 返回的变量cache.NewCache()。此外,最好始终记录来自错误对象的任何可能错误,不要忽略它。这是错误日志:2018/11/14 11:13:24 缓存:未知适配器名称“redis”(忘记导入?)发生上述错误是因为缓存包找不到redis适配器。那是因为你还没有导入包。因此,让我们尝试导入它,然后您的问题将得到解决。import (&nbsp; &nbsp; "fmt"&nbsp; &nbsp; "log"&nbsp; &nbsp; "os"&nbsp; &nbsp; "github.com/astaxie/beego"&nbsp; &nbsp; "github.com/astaxie/beego/cache"&nbsp; &nbsp; "github.com/astaxie/beego/utils/captcha"&nbsp; &nbsp; _ "github.com/astaxie/beego/cache/redis" // <----- this one)由于我们不直接与缓存 redis 包交互,因此使用_.
随时随地看视频慕课网APP

相关分类

Go
我要回答