golang后台 实现用户登录注册

栏目: Go · 发布时间: 5年前

内容简介:第一步 注册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后台 实现用户登录注册》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

海量运维、运营规划之道

海量运维、运营规划之道

唐文 / 电子工业出版社 / 2014-1-1 / 59.00

《海量运维、运营规划之道》作者具有腾讯、百度等中国一线互联网公司多年从业经历,书中依托工作实践,以互联网海量产品质量、效率、成本为核心,从规划、速度、监控、告警、安全、管理、流程、预案、考核、设备、带宽等方面,结合大量案例与读者分享了作者对互联网海量运维、运营规划的体会。 《海量运维、运营规划之道》全面介绍大型互联网公司运维工作所涉及的各个方面,是每个互联网运维工程师、架构师、管理人员不可或......一起来看看 《海量运维、运营规划之道》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

html转js在线工具
html转js在线工具

html转js在线工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具