golang 登录验证码插件使用

195 阅读1分钟
package admin

import (
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/cache"
	"github.com/astaxie/beego/utils/captcha"
)

var cpt *captcha.Captcha

func init() {
	store := cache.NewMemoryCache()
	cpt = captcha.NewWithFilter("/captcha/", store) //一定要写在构造函数里面,要不然第一次打开页面有可能是X
	cpt.ChallengeNums = 4
	cpt.StdWidth = 100
	cpt.StdHeight = 40
}

type LoginController struct {
	beego.Controller
}

func (c *LoginController) Get() {
	c.TplName = "admin/login.html"
}

func (c *LoginController) Dologin() {
	username := c.GetString("username")
	password := c.GetString("password")
	captcha := c.GetString("captcha")
	beego.Info(username)
	beego.Info(password)
	beego.Info(captcha)
	var flag = cpt.VerifyReq(c.Ctx.Request)
	if flag {
		c.Ctx.WriteString("验证码正确")
	} else {
		c.Ctx.WriteString("验证码错误")
	}
}

表单写法

<form action="/admin/dologin" method="post" id="myform">
                <input type="hidden" name="ajaxlogin" id="ajaxlogin">
                <input type="hidden" name="ajaxcode" id="ajaxcode">
                <div class="l_title">小米商城后台管理系统-IT营</div>
                <dl>
                    <dd>管理员姓名:<input class="text" type="text" name="username" id="username"></dd>
                    <dd>管理员密码:<input class="text" type="password" name="password" id="password"></dd>
                    <dd>验 证 码:<input id="verify" type="text" name="captcha">
                        {{create_captcha}}
                    </dd>
                    <dd><input type="submit" class="submit" name="dosubmit" value=""></dd>
                </dl>
            </form>