diff --git a/gin_ops/def_config/config_temp.yaml b/gin_ops/def_config/config_temp.yaml
index fd8c3d8..c4be36c 100644
--- a/gin_ops/def_config/config_temp.yaml
+++ b/gin_ops/def_config/config_temp.yaml
@@ -1,6 +1,6 @@
web:
host: "127.0.0.1"
- web_port: "8080"
+ port: "8080"
tls: false
cert_private_path: ""
cert_public_path: ""
diff --git a/gin_ops/go.mod b/gin_ops/go.mod
index 8ac7c2a..ded0fb3 100644
--- a/gin_ops/go.mod
+++ b/gin_ops/go.mod
@@ -34,6 +34,7 @@ require (
github.com/leodido/go-urn v1.4.0 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
+ github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/ncruces/go-strftime v0.1.9 // indirect
diff --git a/gin_ops/go.sum b/gin_ops/go.sum
index db9be4e..5c05fff 100644
--- a/gin_ops/go.sum
+++ b/gin_ops/go.sum
@@ -65,6 +65,8 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
+github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
diff --git a/gin_ops/main.go b/gin_ops/main.go
index ca84c26..70e5aa4 100644
--- a/gin_ops/main.go
+++ b/gin_ops/main.go
@@ -92,18 +92,19 @@ func main() {
routers.Def_router(r.Group("/")) //分组路由传递到def_routers。go
- var http_port = models.Wed_configs["host"].(string) + ":" + models.Wed_configs["web_port"].(string)
- if models.Wed_configs["tls"].(bool) {
- if models.Wed_configs["cert_public_path"] == "" || models.Wed_configs["cert_private_path"] == "" {
+ var http_port = models.Wed_configs.Host + ":" + models.Wed_configs.Port
+ var gin_port = "0.0.0.0" + ":" + models.Wed_configs.Port
+ if models.Wed_configs.Tls {
+ if models.Wed_configs.Cert_public_path == "" || models.Wed_configs.Cert_private_path == "" {
fmt.Printf("需要配置证书路径")
return
} else {
fmt.Println("https://" + http_port)
- r.RunTLS(http_port, models.Wed_configs["cert_public_path"].(string), models.Wed_configs["cert_private_path"].(string))
+ r.RunTLS(gin_port, models.Wed_configs.Cert_public_path, models.Wed_configs.Cert_private_path)
}
} else {
fmt.Println("http://" + http_port)
- r.Run(http_port)
+ r.Run(gin_port)
}
}
diff --git a/gin_ops/models/config.go b/gin_ops/models/config.go
index cd17fe5..2f85731 100644
--- a/gin_ops/models/config.go
+++ b/gin_ops/models/config.go
@@ -1,8 +1,10 @@
package models
+import "github.com/mitchellh/mapstructure"
+
var Configs map[string]interface{}
-var Wed_configs map[string]interface{}
+var Wed_configs Wed_configs_t
var Database_configs map[string]interface{}
@@ -25,7 +27,11 @@ func init() {
func All_config_init() {
//读取web配置
- Wed_configs = Configs["web"].(map[string]interface{})
+
+ err := mapstructure.Decode(Configs["web"].(map[string]interface{}), &Wed_configs)
+ if err != nil {
+ panic(err)
+ }
//初始化数据库
Database_init()
diff --git a/gin_ops/models/config_head.go b/gin_ops/models/config_head.go
new file mode 100644
index 0000000..25065f8
--- /dev/null
+++ b/gin_ops/models/config_head.go
@@ -0,0 +1,9 @@
+package models
+
+type Wed_configs_t struct {
+ Host string `mapstructure:"host"`
+ Port string `mapstructure:"port"`
+ Tls bool `mapstructure:"tls"`
+ Cert_private_path string `mapstructure:"cert_private_path"`
+ Cert_public_path string `mapstructure:"cert_public_path"`
+}
diff --git a/gin_ops/routers/api_users.go b/gin_ops/routers/api_users.go
index 3b3c1a1..f009b2e 100644
--- a/gin_ops/routers/api_users.go
+++ b/gin_ops/routers/api_users.go
@@ -1,7 +1,6 @@
package routers
import (
- "fmt"
"saas/models"
"strings"
"time"
@@ -64,66 +63,70 @@ func V1_user_api(r *gin.RouterGroup) {
//返回前端的数据
err_msg = "user_api_error"
err_code = Error_code[err_msg]
+
//转换传进来的数据
- var jsonData map[string]interface{}
- if err := ctx.ShouldBindJSON(&jsonData); err != nil {
- fmt.Println("解析JSON ERROR:", err)
- panic(err)
- }
- //转换字段
- newUser := models.User{
- Name: jsonData["username"].(string),
- Pass: jsonData["userpass"].(string), // 实际应替换为哈希值
- // Date 字段无需赋值,数据库会自动填充默认值
- }
- //对用户的密码进行哈希替换
- newUser.Pass = models.Hash_user_pass(newUser.Pass)
+ var jsonData Login_from
+ if err := ctx.ShouldBindJSON(&jsonData); err == nil {
+ //转换字段
+ newUser := models.User{
+ Name: jsonData.Username,
+ Pass: jsonData.Password, // 实际应替换为哈希值
+ // Date 字段无需赋值,数据库会自动填充默认值
+ }
- var user models.User
- user.Name = newUser.Name
- if models.DB.Where(&user).First(&user).Error == nil {
- // 有数据
+ //对用户的密码进行哈希替换
+ newUser.Pass = models.Hash_user_pass(newUser.Pass)
- if user.Pass == newUser.Pass {
- //成功登录
- err_msg = "api_ok"
- err_code = Error_code[err_msg]
- //发送cookie
- //cookie时间
- var cookie_time = 0
- if jsonData["keep_login"].(bool) {
- cookie_time = models.User_configs["cookie_timeout"].(int)
+ var user models.User
+ user.Name = newUser.Name
+ if models.DB.Where(&user).First(&user).Error == nil {
+ // 有数据
+
+ if user.Pass == newUser.Pass {
+ //成功登录
+ err_msg = "api_ok"
+ err_code = Error_code[err_msg]
+ //发送cookie
+ //cookie时间
+ var cookie_time = 0
+ if jsonData.Is_keep_login {
+ cookie_time = models.User_configs["cookie_timeout"].(int)
+ }
+
+ cookie := models.Rand_str_32() //生成32字节cookie
+ //cookie := "testcookie"
+ //fmt.Println(cookie)
+ //将cookie写进数据库
+ new_cookie := models.Cookie{}
+ new_cookie.Domain = models.Wed_configs.Host
+ new_cookie.Name = "user"
+ new_cookie.Value = cookie
+ new_cookie.UserID = user.ID
+
+ //cookie时间
+ new_cookie.CreatedAt = time.Now()
+ new_cookie.UpdatedAt = new_cookie.CreatedAt
+ //计算cookie失效时间
+ new_cookie.ExpiresAt = time.Now().Add(time.Duration(models.User_configs["cookie_timeout"].(int)) * time.Second) //计算过期时间
+ new_cookie.SecureFlag = models.Wed_configs.Tls
+ ctx.SetCookie("user", cookie, cookie_time, "/", models.Wed_configs.Host, models.Wed_configs.Tls, true)
+
+ models.DB.Create(&new_cookie) // 传入指针
+
+ } else {
+ //密码错误
+ err_msg = "user_password_err"
+ err_code = Error_code[err_msg]
}
- cookie := models.Rand_str_32() //生成32字节cookie
- //cookie := "testcookie"
- //fmt.Println(cookie)
- //将cookie写进数据库
- new_cookie := models.Cookie{}
- new_cookie.Domain = models.Wed_configs["host"].(string)
- new_cookie.Name = "user"
- new_cookie.Value = cookie
- new_cookie.UserID = user.ID
-
- //cookie时间
- new_cookie.CreatedAt = time.Now()
- new_cookie.UpdatedAt = new_cookie.CreatedAt
- //计算cookie失效时间
- new_cookie.ExpiresAt = time.Now().Add(time.Duration(models.User_configs["cookie_timeout"].(int)) * time.Second) //计算过期时间
- new_cookie.SecureFlag = models.Wed_configs["tls"].(bool)
- ctx.SetCookie("user", cookie, cookie_time, "/", models.Wed_configs["host"].(string), models.Wed_configs["tls"].(bool), true)
-
- models.DB.Create(&new_cookie) // 传入指针
-
} else {
- //密码错误
- err_msg = "user_password_err"
+ //fmt.Println("用户不存在")
+ err_msg = "user_name_nofind"
err_code = Error_code[err_msg]
}
} else {
- //fmt.Println("用户不存在")
- err_msg = "user_name_nofind"
+ err_msg = "json_error"
err_code = Error_code[err_msg]
}
@@ -151,7 +154,7 @@ func V1_user_api(r *gin.RouterGroup) {
cookie.Value = cookie_vel
models.DB.Where(&cookie).Delete(&cookie)
//删除前端cookie
- ctx.SetCookie("user", "", -1, "/", models.Wed_configs["host"].(string), models.Wed_configs["tls"].(bool), true)
+ ctx.SetCookie("user", "", -1, "/", models.Wed_configs.Host, models.Wed_configs.Tls, true)
err_msg = "api_ok"
err_code = Error_code[err_msg]
diff --git a/gin_ops/routers/api_users_head.go b/gin_ops/routers/api_users_head.go
new file mode 100644
index 0000000..3decfd0
--- /dev/null
+++ b/gin_ops/routers/api_users_head.go
@@ -0,0 +1,7 @@
+package routers
+
+type Login_from struct {
+ Is_keep_login bool `json:"is_keep_login"`
+ Username string `json:"username"`
+ Password string `json:"password"`
+}
diff --git a/gin_ops/routers/def_routers.go b/gin_ops/routers/def_routers.go
index b84437e..9950da7 100644
--- a/gin_ops/routers/def_routers.go
+++ b/gin_ops/routers/def_routers.go
@@ -68,7 +68,7 @@ func Def_router(r *gin.RouterGroup) {
} else {
//找不到登录权限?? 可能被封号?
//删除前端cookie
- ctx.SetCookie("user", "", -1, "/", models.Wed_configs["host"].(string), models.Wed_configs["tls"].(bool), true)
+ ctx.SetCookie("user", "", -1, "/", models.Wed_configs.Host, models.Wed_configs.Tls, true)
}
} else {
@@ -77,12 +77,12 @@ func Def_router(r *gin.RouterGroup) {
//删除数据库的cookie
models.DB.Delete(&cookie)
//删除前端cookie
- ctx.SetCookie("user", "", -1, "/", models.Wed_configs["host"].(string), models.Wed_configs["tls"].(bool), true)
+ ctx.SetCookie("user", "", -1, "/", models.Wed_configs.Host, models.Wed_configs.Tls, true)
}
} else {
//找不到cookie,未登录
//删除前端cookie
- ctx.SetCookie("user", "", -1, "/", models.Wed_configs["host"].(string), models.Wed_configs["tls"].(bool), true)
+ ctx.SetCookie("user", "", -1, "/", models.Wed_configs.Host, models.Wed_configs.Tls, true)
}
}
diff --git a/gin_ops/templates/sign-in-01.html b/gin_ops/templates/sign-in-01.html
index 1b602b7..0d20677 100644
--- a/gin_ops/templates/sign-in-01.html
+++ b/gin_ops/templates/sign-in-01.html
@@ -161,8 +161,8 @@
const url = '/api/v1/user/login';
const sumt_data = {
username: username_dom.value,
- userpass: password_dom.value,
- keep_login: keep_login_dom.checked
+ password: password_dom.value,
+ is_keep_login: keep_login_dom.checked
};
try {
diff --git a/vue3/components/tabler-footer/tabler-footer.vue b/vue3/components/tabler-footer/tabler-footer.vue
new file mode 100644
index 0000000..69c4029
--- /dev/null
+++ b/vue3/components/tabler-footer/tabler-footer.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue3/my_network_func.js b/vue3/my_network_func.js
new file mode 100644
index 0000000..6a80997
--- /dev/null
+++ b/vue3/my_network_func.js
@@ -0,0 +1,31 @@
+export const my_network_func = {
+ host: "",
+ port: 0,
+ head_path: "/api/v1",
+
+ post_json(path, json,callback) {
+ var re_data = {}
+ uni.request({
+ header: {
+ 'Content-Type': 'application/json'
+ },
+ url: this.head_path + path,
+ method: 'POST',
+ data: json,
+ timeout: 10000,
+ success(res) {
+
+ re_data["statusCode"] = res.statusCode
+ re_data["data"] = res.data
+ callback(re_data)
+
+ },
+ fail() {
+ re_data["statusCode"] = -1
+ callback(re_data)
+
+ }
+
+ });
+ },
+}
\ No newline at end of file
diff --git a/vue3/mycss.css b/vue3/mycss.css
index 5f81a3c..68e6015 100644
--- a/vue3/mycss.css
+++ b/vue3/mycss.css
@@ -1,9 +1,26 @@
-.my-input-field {
- height: 80rpx;
- padding: 16rpx 1rpx;
+.my_input_field {
+ height: 70rpx;
+ padding: 16rpx 16rpx;
border-radius: 18rpx;
- border: 2rpx solid rgba(58, 77, 128, 0.08);
+ border: 2rpx solid #e3e3e3;
font-size: 36rpx;
box-shadow: 0 4rpx 12rpx rgba(58, 77, 128, 0.08);
+}
+
+.my_input_placeholder {
+
+ font-size: 30rpx;
+ color: #cfcfcf;
+
+
+}
+
+.my_input_placeholder_error {
+ font-size: 30rpx;
+ color: #d48686;
+}
+
+.my_footer{
+ margin-top: auto;
}
\ No newline at end of file
diff --git a/vue3/pages/index/index.vue b/vue3/pages/index/index.vue
index bc306bd..134d8ca 100644
--- a/vue3/pages/index/index.vue
+++ b/vue3/pages/index/index.vue
@@ -1,14 +1,13 @@
-
-
-
-
-
- {{title}}
-
-
+
+
+
-
+
\ No newline at end of file