예제 #1
0
파일: basehandler.go 프로젝트: aosen/novel
func (self *BaseHandler) checkSign(form url.Values, appid, appsecret string) bool {
	for _, key := range []string{"appid", "sign_method", "sign", "timestamp"} {
		//如果不存在以上的key,则验证失败
		if ok, err := goutils.Contains(key, form); !ok && err == nil {
			return false
		}
	}
	dict := map[string]string{}
	for k, v := range form {
		if len(v) != 1 {
			return false
		}
		if k == "appid" {
			if v[0] != appid {
				return false
			}
		}
		if k != "sign" {
			dict[k] = v[0]
		}
	}
	checkstr := appsecret + goutils.MapDictSortToStr(dict) + appsecret
	//生成sign 验证是否与发过来的sign是否一致
	sign := form["sign"][0]
	var mysign string
	switch dict["sign_method"] {
	case "md5":
		mysign = goutils.Md5(checkstr)
	}
	if sign != mysign {
		return false
	}
	return true
}
예제 #2
0
파일: utils.go 프로젝트: aosen/novel
//检测settings文件
func CheckSettings(settings map[string]string) (string, bool) {
	for _, key := range []string{"DEBUG", "DBINFO", "HOST", "PORT", "DICT", "STOP", "INDEXSTORENUM", "APPID", "APPSECRET", "STATIC", "NOVELPIC"} {
		if ok, _ := goutils.Contains(key, settings); !ok {
			return key, false
		}
	}
	return "", true
}