内容简介:第一步 注册modelsmodels 下建立 models.gomodels.go文件
第一步 注册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
}
}
**************************************************************************************************************************************
第六步 主的client文件调用新文件client_user.go中的登陆,注册方法
client_user.go
package controllers
import (
"an/models"
"github.com/astaxie/beego"
"time"
)
//登录
func (this *ClientController) login() {
//从前端获取数据信息
pwd := this.Input().Get("Pwd")
tel := this.Input().Get("Tel")
beego.Info(pwd)
beego.Info(tel)
if tel == "" || pwd == "" {
this.Data["json"] = map[string]interface{}{"status": 400, "msg": "账号或密码不可为空", "time": time.Now().Format("2006-12-12 12:12:12")}
this.ServeJSON()
return
}
//判断该手机号是否注册
user, err := models.GetUserByTel(tel)
if err != nil { //如果有错误
beego.Info(err)
}
if user != nil { //如果有该用户
if user.Pwd == pwd {
user.Pwd = ""
this.Data["json"] = map[string]interface{}{"status": 200, "user": user, "time": time.Now().Format("2006-01-02 15:04:05")}
this.ServeJSON()
return
}
}
this.Data["json"] = map[string]interface{}{"status": 400, "msg": "账号或密码不为空,请重新登录", "time": time.Now().Format("2006-01-02 15:04:05")}
this.ServeJSON()
return
}
//注册
func (this *ClientController) register() {
tel := this.Input().Get("Tel")
beego.Info(tel)
if tel == "" { //如果手机号为空
this.Data["json"] = map[string]interface{}{"status": 400, "msg": "账号或密码不为空 ,请检查后重新登录!", "time": time.Now().Format("2006-01-02 15:04:05")}
this.ServeJSON()
return
}
//判断该手机号是否已经注册
user, err := models.GetUserByTel(tel)
if err != nil { //如果有错误
beego.Info(err)
this.Data["json"] = map[string]interface{}{"status": 400, "msg": err.Error(), "time": time.Now().Format("2006-01-02 15:04:05")}
this.ServeJSON()
return
}
if user != nil { //如果有该用户
this.Data["json"] = map[string]interface{}{"status": 400, "msg": "该手机号已注册!", "time": time.Now().Format("2006-01-02 15:04:05")}
this.ServeJSON()
return
}
}
*********************************************************************************************************************************
第七步 在routers里面注册路径,由于views中文件注册的路径为/client,因此新加路径为
beego.Router("/client", &controllers.ClientController{})
router.go文件
package routers
import (
"an/controllers"
"github.com/astaxie/beego"
)
func init() {
beego.Router("/client", &controllers.ClientController{})
}
以上所述就是小编给大家介绍的《golang后台 实现用户登录注册》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 【ShareBook】1-后台框架与小程序用户登录接口实战
- 使用Gin框架构建一个简单的注册登录后台(Go语言)
- Firefox 68.0 发布,支持无密码登录、Windows 后台智能传输服务
- 使用GoAdmin极速搭建golang应用管理后台(二)——自定义登录页面
- beego实现用户未登录跳转到登录页面
- Django实现小程序的登录验证功能,并维护登录态
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
海量运维、运营规划之道
唐文 / 电子工业出版社 / 2014-1-1 / 59.00
《海量运维、运营规划之道》作者具有腾讯、百度等中国一线互联网公司多年从业经历,书中依托工作实践,以互联网海量产品质量、效率、成本为核心,从规划、速度、监控、告警、安全、管理、流程、预案、考核、设备、带宽等方面,结合大量案例与读者分享了作者对互联网海量运维、运营规划的体会。 《海量运维、运营规划之道》全面介绍大型互联网公司运维工作所涉及的各个方面,是每个互联网运维工程师、架构师、管理人员不可或......一起来看看 《海量运维、运营规划之道》 这本书的介绍吧!