Beego簡易ユーザー登録とログイン
4272 ワード
データベーステーブルの作成
modelsディレクトリの下
User.go
コントローラの設定
コントロールディレクトリの下
User.go
ルーティングの設定
routersディレクトリの下
roouter.go
Htmlページ構成
viewディレクトリ
register.html
login.html
modelsディレクトリの下
User.go
package models
import (
"time"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
//
type Users struct {
Id int
Name string `orm:"unique"` //
Pwd string
}
func init() {
//
orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/Person?charset=utf8&loc=Local")
// modle
orm.RegisterModel(new(Users)
// , false true ,
orm.RunSyncdb("default", false, true)
}
コントローラの設定
コントロールディレクトリの下
User.go
package controllers
import (
"github.com/astaxie/beego/orm"
"github.com/astaxie/beego"
"myproject/models"
"strings"
)
type RegisterController struct {
beego.Controller
}
//
func (this *RegisterController) ShowRegister() {
this.TplName = "register.html"
}
//
func (this *RegisterController) HandleRegister() {
// ,
Name := strings.TrimSpace(this.GetString("userName"))
Pwd := strings.TrimSpace(this.GetString("passWord"))
// beego.Info(" :", Name, " :", Pwd)
//
if Name == "" || Pwd == "" {
beego.Info(" ")
this.TplName = "register.html"
this.Data["errmsg"] = " !"
return
}
// ( ,Users)
// orm
o := orm.NewOrm()
//
user := models.Users{}
//
user.Name = Name
user.Pwd = Pwd
_, err := o.Insert(&user)
if err != nil {
beego.Info(" , !!!")
this.TplName = "register.html"
this.Data["errmsg"] = " , !!!!"
return
}
//
// this.Ctx.WriteString(" !!!")
//
this.Redirect("login", 302)
}
type LoginController struct {
beego.Controller
}
// get
func (this *LoginController) ShowLogin() {
this.TplName = "login.html"
}
// post
func (this *LoginController) HandleLogin() {
// ,
Name := strings.TrimSpace(this.GetString("userName"))
Pwd := strings.TrimSpace(this.GetString("passWord"))
beego.Info(" :", Name, " :", Pwd)
//
if Name == "" || Pwd == "" {
beego.Info(" !!")
this.TplName = "login.html"
this.Data["errmsg"] = " !!!!!"
return
}
//
// orm
o := orm.NewOrm()
//
var user models.Users
//
user.Name = Name
err := o.Read(&user, "Name")
if err != nil {
beego.Info(" !!!")
this.TplName = "login.html"
this.Data["errmsg"] = " !!!!!"
return
}
//
if user.Pwd != Pwd {
beego.Info(" !!!")
this.TplName = "login.html"
this.Data["errmsg"] = " !!"
return
}
//
this.Ctx.WriteString(" ")
//
// this.Redirect("index", 302)
}
ルーティングの設定
routersディレクトリの下
roouter.go
beego.Router("/register", &controllers.RegisterController{}, "get:ShowRegister;post:HandleRegister")
beego.Router("/login", &controllers.LoginController{}, "get:ShowLogin;post:HandleLogin")
Htmlページ構成
viewディレクトリ
register.html
login.html