同学你好,可参考git源码中登录接口逻辑,返回的是json数据(https://git.imooc.com/coding-323/filestore-server/src/charter4/handler/user.go):
func SignInHandler(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodGet {
// data, err := ioutil.ReadFile("./static/view/signin.html")
// if err != nil {
// w.WriteHeader(http.StatusInternalServerError)
// return
// }
// w.Write(data)
http.Redirect(w, r, "/static/view/signin.html", http.StatusFound)
return
}
r.ParseForm()
username := r.Form.Get("username")
password := r.Form.Get("password")
encPasswd := util.Sha1([]byte(password + pwdSalt))
// 1. 校验用户名及密码
pwdChecked := dblayer.UserSignin(username, encPasswd)
if !pwdChecked {
w.Write([]byte("FAILED"))
return
}
// 2. 生成访问凭证(token)
token := GenToken(username)
upRes := dblayer.UpdateToken(username, token)
if !upRes {
w.Write([]byte("FAILED"))
return
}
// 3. 登录成功后重定向到首页
//w.Write([]byte("http://" + r.Host + "/static/view/home.html"))
resp := util.RespMsg{
Code: 0,
Msg: "OK",
Data: struct {
Location string
Username string
Token string
}{
Location: "http://" + r.Host + "/static/view/home.html",
Username: username,
Token: token,
},
}
w.Write(resp.JSONBytes())
}