/* * @description:web共用方法 * @Author: CP * @Date: 2020-08-21 11:12:56 * @FilePath: \construction_management\comm\func_web.go */ package comm import ( "net/http" "net" ) // 得到客户端IP地址 func ClientIP(request *http.Request) string { host, _, _ := net.SplitHostPort(request.RemoteAddr) return host } // 跳转URL func Redirect(writer http.ResponseWriter, url string) { writer.Header().Add("Location", url) writer.WriteHeader(http.StatusFound) } // // 从cookie中得到当前登录的用户 // func GetLoginUser(request *http.Request) *models.ObjLoginuser { // c, err := request.Cookie("lottery_loginuser") // if err != nil { // return nil // } // params, err := url.ParseQuery(c.Value) // if err != nil { // return nil // } // uid, err := strconv.Atoi(params.Get("uid")) // if err != nil || uid < 1 { // return nil // } // // Cookie最长使用时长 // now, err := strconv.Atoi(params.Get("now")) // if err != nil || NowUnix()-now > 86400*30 { // return nil // } // //// IP修改了是不是要重新登录 // //ip := params.Get("ip") // //if ip != ClientIP(request) { // // return nil // //} // // 登录信息 // loginuser := &models.ObjLoginuser{} // loginuser.Uid = uid // loginuser.Username = params.Get("username") // loginuser.Now = now // loginuser.Ip = ClientIP(request) // loginuser.Sign = params.Get("sign") // if err != nil { // log.Println("fuc_web GetLoginUser Unmarshal ", err) // return nil // } // sign := createLoginuserSign(loginuser) // if sign != loginuser.Sign { // log.Println("fuc_web GetLoginUser createLoginuserSign not sign", sign, loginuser.Sign) // return nil // } // return loginuser // } // // 将登录的用户信息设置到cookie中 // func SetLoginuser(writer http.ResponseWriter, loginuser *models.ObjLoginuser) { // if loginuser == nil || loginuser.Uid < 1 { // c := &http.Cookie{ // Name: "lottery_loginuser", // Value: "", // Path: "/", // MaxAge: -1, // } // http.SetCookie(writer, c) // return // } // if loginuser.Sign == "" { // loginuser.Sign = createLoginuserSign(loginuser) // } // params := url.Values{} // params.Add("uid", strconv.Itoa(loginuser.Uid)) // params.Add("username", loginuser.Username) // params.Add("now", strconv.Itoa(loginuser.Now)) // params.Add("ip", loginuser.Ip) // params.Add("sign", loginuser.Sign) // c := &http.Cookie{ // Name: "lottery_loginuser", // Value: params.Encode(), // Path: "/", // } // http.SetCookie(writer, c) // } // // 根据登录用户信息生成加密字符串 // func createLoginuserSign(loginuser *models.ObjLoginuser) string { // str := fmt.Sprintf("uid=%d&username=%s&secret=%s", loginuser.Uid, loginuser.Username, conf.CookieSecret) // return CreateSign(str) // }