一起使用GO(golang) 來做一個後臺管理系統系列(5) 實現登錄部分,校驗登陸用戶

首先修改頁面的login.html

添加頁面登陸事件

這塊js寫的:

     function  login() {
            var formData = new FormData();
            formData.append("username",$('input[name="username"]').val())
            formData.append("password",$('input[name="password"]').val())
            $.ajax({
                url:"http://127.0.0.1:8888/user/login",
                type:'POST',
                data:formData,
                processData: false,
                contentType: false,
                dataType:'json',
                success:function(data){
                    console.log(data)
                    if(data.code==200) {
                        location.href = 'index.html'
                        localStorage.setItem("myproject_username",$('input[name="username"]').val())
                        localStorage.setItem("myproject_password",$('input[name="password"]').val())
                    }else{
                        alert(data.msg) //提示錯誤!!
                    }
                }
            });
        }
    </script>

其中的服務地址。在後面改成了自動獲取服務器地址才行。

這塊不能寫死。

添加controllers 包管理接口

在controllers包中添加usercontroller.go

創建func login方法

/*login user*/
//博客地址:https://blog.csdn.net/u010919083
func (m UserC) Login(g *gin.Context) {
	fmt.Println("login.........")
	rsp := new(Rsp)
	name := g.PostForm("username")
	pass := g.PostForm("password")

	//var gerr *gvalid.Error
	//gerr = gvalid.Check(g.PostForm("username"), "required", nil)
	//if gerr != nil {
	//	rsp.Msg = "faild"
	//	rsp.Code = 201
	//	rsp.Data = gerr.Maps()
	//	g.JSON(http.StatusOK, rsp)
	//	return
	//}
	//gerr = gvalid.Check(g.PostForm("password"), "required", nil)
	//if gerr != nil {
	//	rsp.Msg = "faild"
	//	rsp.Code = 201
	//	rsp.Data = gerr.Maps()
	//	g.JSON(http.StatusOK, rsp)
	//	return
	//}

	findfilter := bson.D{{"username", g.PostForm("username")}, {"password", g.PostForm("password")}}
	cur, err := m.Mgo.Collection(db.User).Find(context.Background(), findfilter)
	if err != nil {
		rsp.Msg = "faild"
		rsp.Code = 201
		rsp.Data = err.Error()
		g.JSON(http.StatusOK, rsp)
		return
	}
	for cur.Next(context.Background()) {
		elme := new(models.User)
		err := cur.Decode(elme)
		if err == nil {
			if elme.Username == name && elme.Password == pass {
				var info = new(LoginInfo)
				info.User = elme
				token, err := util.GenerateToken(g.PostForm("username"), g.PostForm("password"))
				if err == nil {
					info.Token = token
				}
				rsp.Msg = "success"
				rsp.Code = 200
				rsp.Data = info
				g.JSON(http.StatusOK, rsp)
				return
			}
		}
	}

	rsp.Msg = "user is null"
	rsp.Code = 201
	rsp.Data = err
	g.JSON(http.StatusOK, rsp)
}

這塊相對簡單。主要是對用戶名和密碼做了檢驗數據庫是否存在。

這快需要加密驗證的小夥伴,自行修改哦。

這塊登陸後的信息token 會存下來的哦。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章