代码拉取完成,页面将自动刷新
package app
import (
"gitee.com/zhucheer/orange/encrypt"
"gitee.com/zhucheer/orange/session"
"time"
)
// MiddlewareFunc defines a function to process middleware.
type MiddlewareFunc func(HandlerFunc) HandlerFunc
type HandlerFunc func(*Context) error
type MiddleWare interface {
Func() MiddlewareFunc
}
// 翻转中间件,因执行时是从最外层函数开始,定义时需要从最后一个中间件开始定义
func reverseMiddleWare(middlewares []MiddleWare) []MiddleWare {
length := len(middlewares)
for i := 0; i < length/2; i++ {
middlewares[length-1-i], middlewares[i] = middlewares[i], middlewares[length-1-i]
}
return middlewares
}
func startCsrfToken(session session.Store) string {
csrfToken := getAppKey() + time.Now().String()
csrfTokenMd5 := encrypt.Md5ToUpper(csrfToken)
sessionKey := "CSRF-TOKEN"
if token := session.Get(sessionKey); token != nil {
return token.(string)
}
session.Set(sessionKey, csrfTokenMd5)
return csrfTokenMd5
}
func checkCsrfToken(next HandlerFunc) HandlerFunc {
return func(c *Context) error {
tokenInHeader := c.request.Header.Get("CSRF-TOKEN")
if c.request.Method == "POST" && tokenInHeader != c.CsrfToken {
return c.ResponseWrite([]byte("csrf token verify error"))
}
return next(c)
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。