forked from free-lancers/electricity_bill_calc_service
feat(security):增加用于确定用户登录情况的中间件。
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"electricity_bill_calc/cache"
|
||||
"electricity_bill_calc/exceptions"
|
||||
"electricity_bill_calc/model"
|
||||
"electricity_bill_calc/response"
|
||||
"electricity_bill_calc/security"
|
||||
"electricity_bill_calc/service"
|
||||
"errors"
|
||||
"net/http"
|
||||
@@ -22,6 +24,7 @@ func InitializeUserController(router *gin.Engine) {
|
||||
Router: router,
|
||||
}
|
||||
UserController.Router.POST("/login", UserController.Login)
|
||||
UserController.Router.DELETE("/logout", security.MustAuthenticated, UserController.Logout)
|
||||
}
|
||||
|
||||
type LoginFormData struct {
|
||||
@@ -59,3 +62,18 @@ func (_UserController) Login(c *gin.Context) {
|
||||
}
|
||||
result.LoginSuccess(session)
|
||||
}
|
||||
|
||||
func (_UserController) Logout(c *gin.Context) {
|
||||
result := response.NewResult(c)
|
||||
session, exists := c.Get("session")
|
||||
if !exists {
|
||||
result.Success("用户会话已结束。")
|
||||
return
|
||||
}
|
||||
_, err := cache.ClearSession(session.(*model.Session).Token)
|
||||
if err != nil {
|
||||
result.Error(http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
result.Success("用户已成功登出系统。")
|
||||
}
|
||||
|
Reference in New Issue
Block a user