-
Notifications
You must be signed in to change notification settings - Fork 0
/
userhandler.go
107 lines (102 loc) · 2.97 KB
/
userhandler.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package controller
import (
"bookstore/dao"
"bookstore/model"
"bookstore/utils"
"html/template"
"net/http"
)
//Logout //处理用户注销的函数
func Logout(w http.ResponseWriter, r *http.Request) {
//获取Cookie
cookie, _ := r.Cookie("user")
if cookie != nil {
//获取cookie的value值
cookieValue := cookie.Value
//删除数据库中与之对应的Session
dao.DeleteSession(cookieValue)
//设置cookie失效
cookie.MaxAge = -1
//将修改之后的cookie发送给浏览器
http.SetCookie(w, cookie)
}
//去首页
GetPageBooksByPrice(w, r)
}
//Login 处理用户登录的函数
func Login(w http.ResponseWriter, r *http.Request) {
//判断是否已经登录
flag, _ := dao.IsLogin(r)
if flag {
//已经登录
//去首页
GetPageBooksByPrice(w, r)
} else {
//获取用户名和密码
username := r.PostFormValue("username")
password := r.PostFormValue("password")
//调用userdao中验证用户名和密码的方法
user, _ := dao.CheckUserNameAndPassword(username, password)
if user.ID > 0 {
//用户名和密码正确
//生成UUID作为Session的id
uuid := utils.CreateUUID()
//创建一个Session
sess := &model.Session{
SessionID: uuid,
UserName: user.Username,
UserID: user.ID,
}
//将Session保存到数据库中
dao.AddSession(sess)
//创建一个Cookie,让它与Session相关联
cookie := http.Cookie{
Name: "user",
Value: uuid,
HttpOnly: true,
}
//将cookie发送给浏览器
http.SetCookie(w, &cookie)
t := template.Must(template.ParseFiles("views/pages/user/login_success.html"))
t.Execute(w, user)
} else {
//用户名或密码不正确
t := template.Must(template.ParseFiles("views/pages/user/login.html"))
t.Execute(w, "用户名或密码不正确!")
}
}
}
//Regist 处理用户的函注册数
func Regist(w http.ResponseWriter, r *http.Request) {
//获取用户名和密码
username := r.PostFormValue("username")
password := r.PostFormValue("password")
email := r.PostFormValue("email")
//调用userdao中验证用户名和密码的方法
user, _ := dao.CheckUserName(username)
if user.ID > 0 {
//用户名已存在
t := template.Must(template.ParseFiles("views/pages/user/regist.html"))
t.Execute(w, "用户名已存在!")
} else {
//用户名可用,将用户信息保存到数据库中
dao.SaveUser(username, password, email)
//用户名和密码正确
t := template.Must(template.ParseFiles("views/pages/user/regist_success.html"))
t.Execute(w, "")
}
}
//CheckUserName 通过发送Ajax验证用户名是否可用
func CheckUserName(w http.ResponseWriter, r *http.Request) {
//获取用户输入的用户名
username := r.PostFormValue("username")
//调用userdao中验证用户名和密码的方法
user, _ := dao.CheckUserName(username)
if user.ID > 0 {
//用户名已存在
w.Write([]byte("用户名已存在!"))
} else {
//用户名可用
w.Write([]byte("<font style='color:green'>用户名可用!</font>"))
}
}