Beego簡易ユーザー登録とログイン

4272 ワード

データベーステーブルの作成
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