Rumah > Artikel > pembangunan bahagian belakang > Teroka menggunakan Golang untuk melaksanakan permintaan log masuk
Golang ialah bahasa pengaturcaraan yang cekap dan berkuasa yang berfungsi dengan baik dalam pengaturcaraan rangkaian. Fungsi log masuk laman web adalah bahagian penting dalam mana-mana aplikasi web. Dalam artikel ini, kami akan meneroka cara menggunakan Golang untuk melaksanakan permintaan log masuk.
Sebelum kita mula, kita perlu memahami apa itu permintaan log masuk. Permintaan log masuk biasanya merupakan sekeping data yang dihantar ke pelayan selepas pengguna memasukkan nama pengguna dan kata laluan mereka pada halaman log masuk dan mengklik butang "Log Masuk". Selepas pelayan menerima data ini, ia akan memproses pengesahan pengguna dan mengembalikan hasil, iaitu kejayaan atau kegagalan. Dalam proses ini, teknologi yang sering digunakan ialah protokol HTTP, jadi permintaan log masuk kami juga akan dilakukan berdasarkan protokol HTTP.
Seterusnya, mari kita lihat cara menggunakan Golang untuk membuat permintaan log masuk asas. Pertama, kita perlu memasang beberapa pakej yang diperlukan. Di Golang, kita boleh menggunakan arahan go get untuk memasang pakej ini seperti berikut:
go get github.com/astaxie/beego
go get github.com/beego/bee
go get github.com/go-sql-driver/mysql
Di sini, kami menggunakan tiga pakej perisian yang berbeza, iaitu beego, bee dan mysql. Antaranya, beego ialah rangka kerja Web berdasarkan corak MVC, bee ialah set alat untuk pembangunan aplikasi pantas, dan mysql ialah pemacu untuk menyambung ke pangkalan data MySQL. Sudah tentu, kami juga boleh menggunakan jenis pangkalan data lain, tetapi ini di luar skop artikel ini.
Seterusnya, mari buat permintaan log masuk asas. Mula-mula kita perlu mentakrifkan beberapa pembolehubah asas, seperti yang ditunjukkan di bawah:
"github.com/astaxie/beego" "github.com/astaxie/beego/orm" "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql" "net/http" "time" "fmt" ) type User struct { Id int UserName string Password string CreateTime time.Time } func init() { err := orm.RegisterDriver("mysql", orm.DRMySQL) if err != nil { fmt.Println(err) } err = orm.RegisterDataBase("default", "mysql", "root:root@/test?charset=utf8", 30) if err != nil { fmt.Println(err) } orm.RegisterModel(new(User)) err = orm.RunSyncdb("default", false, true) if err != nil { fmt.Println(err) } } func Login(rw http.ResponseWriter, req *http.Request) { // 获取用户输入的用户名和密码 username := req.FormValue("username") password := req.FormValue("password") // 查询数据库中是否存在该用户 o := orm.NewOrm() user := User{UserName: username} err := o.Read(&user, "UserName") if err != nil { rw.Write([]byte(`{"status":false,"message":"用户名或密码错误"}`)) return } else { if user.Password != password { rw.Write([]byte(`{"status":false,"message":"用户名或密码错误"}`)) return } } // 生成一个随机字符串并保存到Session中 sessionID := beego.SessionID() session := beego.GlobalSessions.SessionStart(rw, req) session.Set(sessionID, user.Id) // 将SessionID添加到响应头中 rw.Header().Add("SessionID", sessionID) // 返回成功结果 rw.Write([]byte(`{"status":true,"message":"登录成功"}`)) }``` 上述代码主要分为三个部分。首先,我们定义了一个名为User的结构体,用来存储用户的信息。其次,我们使用了beego提供的ORM框架,可以很方便地对数据库进行操作。最后,在Login函数中,我们对用户输入的用户名和密码进行了验证,并将验证结果以JSON格式返回给客户端。 接下来我们来看看如何使用上面的代码。假设我们有一个名为login.html的登录界面,其中包含一个用户名输入框,一个密码输入框和一个登录按钮。我们可以在前端页面使用JavaScript代码来实现登录请求,具体代码如下所示:
// 获取输入框中的用户名和密码 var username = document.getElementById("username").value; var password = document.getElementById("password").value; // 创建XMLHttpRequest对象 var xmlhttp = new XMLHttpRequest(); // 发送登录请求 xmlhttp.open("POST", "/login", true); xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState === 4 && xmlhttp.status === 200) { var result = JSON.parse(xmlhttp.responseText); if (result.status === true) { alert(result.message); window.location.href = "/home"; } else { alert(result.message); } } }; xmlhttp.send("username=" + username + "&password=" + password);
}`
Dalam kod JavaScript ini, kami mentakrifkan pembolehubah bernama Log masuk Fungsi yang digunakan untuk mengendalikan peristiwa apabila pengguna mengklik butang log masuk. Selepas pengguna memasukkan nama pengguna dan kata laluan dan mengklik butang log masuk, fungsi ini akan menghantar permintaan POST ke laluan /login, dan kemudian pelayan akan memanggil fungsi Log masuk yang kami takrifkan di atas untuk pengesahan.
Akhir sekali, mari perbaiki kod kami. Kini kita perlu menambah kod berikut di pintu masuk program:
http.HandleFunc("/login", Login) beego.BConfig.WebConfig.Session.SessionOn = true beego.Run() }```
Atas ialah kandungan terperinci Teroka menggunakan Golang untuk melaksanakan permintaan log masuk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!