Rumah > Artikel > pembangunan bahagian belakang > golang用户登录怎么做
golang实现用户登录注册的方法如下:
第一步 注册models
models下建立models.go
models.go文件
package models import ( "github.com/astaxie/beego" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" ) func RegisterDB() { //注册驱动 orm.RegisterDriver("mysql", orm.DRMySQL) //数据库链接 //注册默认数据库 var db_url string = beego.AppConfig.String("username_DB") + ":" + beego.AppConfig.String("password_DB") + "@tcp(" + beego.AppConfig.String("host_DB") + ")/" + beego.AppConfig.String("name_DB") + "?charset=" + beego.AppConfig.String("charset") beego.Info(db_url) orm.RegisterDataBase("default", "mysql", db_url) // orm.RegisterDataBase("default", "mysql", "an:111@tcp(127.0.0.1:3306)/yoo_home?charset=utf8") // //注册model orm.RegisterModel(new(TUser)) }
第二步 数据库连接的需要
conf下的app.conf文件
appname = an httpport = 8080 runmode = dev sessionon = true #数据库为mysql host_DB = "127.0.0.1" port_DB = "3306" charset = "utf8" name_DB = "ancg" username_DB = "an" password_DB = 111
第三步 写个简单的前端 view界面
views 下建立client.html文件
<!DOCTYPE html> <html> <head> <title>客户端接口测试</title> </head> <body> <label>注册</label> <form action="/client " method="POST"> <label>[options == register 注册]</label> <div>options:<input type="text" value="register" name="options"></div> <div>tel:<input type="text" name="Tel"></div> <div>pwd:<input type="text" name="Pwd"></div> <input type="submit" name="注册"Submit/> </form> <br> <label>登录</label> <form action="/client " method="POST"> <label>[options == login 登录]</label> <div>options:<input type="text" value="login" name="options"></div> <div>tel:<input type="text" name="Tel"></div> <div>pwd:<input type="text" name="Pwd"></div> <input type="submit" name="注册"Submit/> </form> </body> </html>
第四步 在models中 建立TUser 用来为数据库自动建表使用
TUser.go
package models import ( "github.com/astaxie/beego/orm" //_"github.com/go-sql-driver/mysql" ) //用户表 type TUser struct { //用户序号 Id int64 //电话号码 Tep string //密码 Pwd string //收款人 Payee string //地址 Address string //收款帐号 Amount string //账号类别 AmountType string //是否消费者 IsCustomer bool //是否商家 IsSeller bool //是否配送员 IsDiliver bool //是否管理员 IsManager bool //微信openId Vid string //是否冻结 IsLock bool //创建时间 --- 时间戳 AddTime int64 } //新建用户 func AddUser(user *TUser) (int64, error) { o := orm.NewOrm() //数据库 userId, err := o.Insert(user) //插入数据 return userId, err } //查询账号 func GetUserById(userId int64) (*TUser, error) { o := orm.NewOrm() //数据库 user := new(TUser) //TUser就是第9行struct的数据库,就是mysql的表 qs := o.QueryTable("t_user") //表名为t_user err := qs.Filter("id", userId).One(user) //One是指查询一条数据,One(user)是查询mysql表中一条数据 return user, err } //手机号查询账号 func GetUserByTel(tel string) (*TUser, error) { o := orm.NewOrm() user := new(TUser) //TUser就是第9行struct的数据库,就是mysql的表 qs := o.QueryTable("t_user") //表名为t_user err := qs.Filter("tel", tel).One(user) //One是指查询一条数据,One(user)是查询mysql表中一条数据 return user, err } //微信Id查询账号 func GetUserByVid(vid int64) (*TUser, error) { o := orm.NewOrm() user := new(TUser) //TUser就是第9行struct的数据库,就是mysql的表 qs := o.QueryTable("t_user") //表名为t_user err := qs.Filter("vid", vid).One(user) //One是指查询一条数据,One(user)是查询mysql表中一条数据 return user, err }
第五步 controllers 里面建立一个主接options的文件,用对应option来调用其它的controllers
client.go文件
package controllers import ( "github.com/astaxie/beego" "time" ) type ClientController struct { beego.Controller } func (this *ClientController) Get() { this.TplName = "client.html" } func (this *ClientController) Post() { options := this.Input().Get("options") beego.Info(options) //请求检查方法 if options != "" { switch options { case "login": this.login() case "register": this.register() default: this.Data["json"] = map[string]interface{}{"status": 400, "msg": "无对应处理方法!", "time": time.Now().Format("2006-12-12 12:12:12")} this.ServeJSON() return } this.Data["json"] = map[string]interface{}{"status": 400, "msg": "options为空", "time": time.Now().Format("2006-12-12 12:12:12")} this.ServeJSON() return } }
更多golang知识请关注golang教程栏目。
Atas ialah kandungan terperinci golang用户登录怎么做. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!