TODO: 权限完成
This commit is contained in:
parent
250a40f83e
commit
d8f261382d
26
main.go
26
main.go
|
@ -3,6 +3,7 @@ package main
|
||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/gin-contrib/sessions"
|
"github.com/gin-contrib/sessions"
|
||||||
"github.com/gin-contrib/sessions/cookie"
|
"github.com/gin-contrib/sessions/cookie"
|
||||||
|
@ -22,12 +23,19 @@ func auth(ctx *gin.Context) {
|
||||||
|
|
||||||
session := sessions.Default(ctx)
|
session := sessions.Default(ctx)
|
||||||
|
|
||||||
if token := session.Get(SessionUser); token == nil {
|
if user := session.Get(SessionUser); user == nil {
|
||||||
|
|
||||||
session.Clear()
|
session.Clear()
|
||||||
session.Save()
|
session.Save()
|
||||||
|
|
||||||
ctx.JSON(http.StatusUnauthorized, gin.H{"message": "需要登录"})
|
ctx.JSON(http.StatusUnauthorized, gin.H{"message": "需要登录"})
|
||||||
return
|
return
|
||||||
|
} else if user.(*User).Expired < time.Now().Unix() {
|
||||||
|
session.Clear()
|
||||||
|
session.Save()
|
||||||
|
|
||||||
|
ctx.JSON(http.StatusUnauthorized, gin.H{"message": "账号过期"})
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,10 +43,10 @@ func auth(ctx *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func login(ctx *gin.Context) {
|
func login(ctx *gin.Context) {
|
||||||
user := ctx.PostForm("user")
|
userName := ctx.PostForm("user")
|
||||||
session := sessions.Default(ctx)
|
session := sessions.Default(ctx)
|
||||||
|
|
||||||
if user == "" {
|
if userName == "" {
|
||||||
|
|
||||||
if tokenUser := session.Get(SessionUser); tokenUser != nil {
|
if tokenUser := session.Get(SessionUser); tokenUser != nil {
|
||||||
ctx.JSON(http.StatusOK, gin.H{"user": tokenUser})
|
ctx.JSON(http.StatusOK, gin.H{"user": tokenUser})
|
||||||
|
@ -47,10 +55,17 @@ func login(ctx *gin.Context) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if realPassword, ok := GlobalConfig.GetUser(user); ok {
|
if realPassword, ok := GlobalConfig.GetUser(userName); ok {
|
||||||
|
|
||||||
pwd := ctx.PostForm("pwd")
|
pwd := ctx.PostForm("pwd")
|
||||||
if realPassword == pwd {
|
if realPassword == pwd {
|
||||||
|
|
||||||
|
user := &User{Name: userName,
|
||||||
|
Expired: time.Now().Unix() + 15,
|
||||||
|
ConfigPath: "",
|
||||||
|
Config: nil,
|
||||||
|
}
|
||||||
|
|
||||||
session.Set(SessionUser, user)
|
session.Set(SessionUser, user)
|
||||||
session.Save()
|
session.Save()
|
||||||
ctx.JSON(http.StatusOK, gin.H{"message": "登录成功"})
|
ctx.JSON(http.StatusOK, gin.H{"message": "登录成功"})
|
||||||
|
@ -73,6 +88,7 @@ func logout(ctx *gin.Context) {
|
||||||
session := sessions.Default(ctx)
|
session := sessions.Default(ctx)
|
||||||
session.Clear()
|
session.Clear()
|
||||||
session.Save()
|
session.Save()
|
||||||
|
ctx.JSON(http.StatusOK, gin.H{"message": "退出登录成功"})
|
||||||
}
|
}
|
||||||
|
|
||||||
func userConfig(ctx *gin.Context) {
|
func userConfig(ctx *gin.Context) {
|
||||||
|
@ -84,7 +100,7 @@ func userConfig(ctx *gin.Context) {
|
||||||
ctx.JSON(http.StatusUnauthorized, gin.H{"error": "权限错误"})
|
ctx.JSON(http.StatusUnauthorized, gin.H{"error": "权限错误"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.JSON(http.StatusOK, gin.H{"message": "获取配置成功"})
|
ctx.JSON(http.StatusOK, gin.H{"message": "获取配置成功", "user": user.(*User).Name})
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
15
user.go
Normal file
15
user.go
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "encoding/gob"
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
gob.Register(&User{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// User 用户结构
|
||||||
|
type User struct {
|
||||||
|
Expired int64
|
||||||
|
Name string
|
||||||
|
ConfigPath string
|
||||||
|
Config interface{}
|
||||||
|
}
|
|
@ -15,7 +15,7 @@ axios.interceptors.response.use((response) => {
|
||||||
return response
|
return response
|
||||||
}, (err) => {
|
}, (err) => {
|
||||||
if(err.response.status === 401){
|
if(err.response.status === 401){
|
||||||
ReactDOM.render(<App></App>, document.getElementById('root'));
|
ReactDOM.render(<Login isAutoLogin={false}></Login>, document.getElementById('root'));
|
||||||
}
|
}
|
||||||
return Promise.reject(err)
|
return Promise.reject(err)
|
||||||
})
|
})
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Login extends React.Component {
|
||||||
axios.post("/api/login", new FormData()).then(loginInfo => {
|
axios.post("/api/login", new FormData()).then(loginInfo => {
|
||||||
axios.post("/api/user/config", new FormData()).then( value => {
|
axios.post("/api/user/config", new FormData()).then( value => {
|
||||||
console.log(value);
|
console.log(value);
|
||||||
ReactDom.render(<SiderConfig userName={loginInfo.data["user"]}></SiderConfig>, document.getElementById('root'))
|
ReactDom.render(<SiderConfig userName={value.data["user"]}></SiderConfig>, document.getElementById('root'))
|
||||||
} )
|
} )
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue
Block a user