4-3章节做完无法登录

来源:4-4 编码实战:实现用户信息查询接口

慕少5522438

2021-03-03

图片描述

做到4-3章节,从charater4源码种把static替换我的源码种仍然存在图中问题。
上个问题也没好好回答?收费就是买个视频,不帮忙回答问题?
4-3章节源码种登录成功后返回是的body是“http://192.168.3.29:8080/static/view/home.html”,但是实际上/signin.html文件要求 body是json格式且包含token,username,location,才对。
你这个教程为什么不在每个课时后面附上 “正确对应的static文件” !!!!,还要让别人去猜?
收费课程也要用心做啊?!

写回答

2回答

xiaomo

2021-03-05

同学你好,可参考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())
}


1
0

xiaomo

2021-03-05

是这样的,视频中登录接口的返回值,在节选上线后的后续有做优化,视频4-3小节(大约04:23时间点)已加了瞄点说明。

0
0

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程