| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 | /* * @description:web共用方法 * @Author: CP * @Date: 2020-08-21 11:12:56 * @FilePath: \construction_management\comm\func_web.go */package commimport (	"net/http"	"net")// 得到客户端IP地址func ClientIP(request *http.Request) string {	host, _, _ := net.SplitHostPort(request.RemoteAddr)	return host}// 跳转URLfunc 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)// }
 |