Просмотр исходного кода

bigfix tracking cookie , only sent right before we try to handle each request.

master
sp 4 лет назад
Родитель
Сommit
f16c70d2de
3 измененных файлов: 25 добавлений и 6 удалений
  1. +11
    -3
      apiV1login.go
  2. +13
    -3
      apiv1.go
  3. +1
    -0
      main.go

+ 11
- 3
apiV1login.go Просмотреть файл

} }
//log in user //log in user
if u.Id == ss.User { if u.Id == ss.User {
*ss = trial //we are the same
e = ss.LogInUser(u.Id)
if e != nil {
log.Error("Cannot Load authenticated user:", u.Id)
apiV1Server500Error(w, r)
return
}
} else if !ss.IsEmpty() { } else if !ss.IsEmpty() {
ss.ReuseAsUser(u.Id, ss.Expire)
ss.InitForUser(u.Id, time.Now().Add(loan.DefaultSessionDuration))
} else { } else {
ss.InitForUser(ss.User, time.Now().Add(loan.DefaultSessionDuration))
ss.InitForUser(u.Id, time.Now().Add(loan.DefaultSessionDuration))
} }
//enforce machine id
ss.Add("mid", apiV1GetMachineId(r))


res.add("auth", ss.Token) res.add("auth", ss.Token)
res.add("session_id", ss.Id) res.add("session_id", ss.Id)
res.add("session_user", ss.User) res.add("session_user", ss.User)
res.add("buser", ss.User) res.add("buser", ss.User)
res.add("bpass", ss.CheckSum()) res.add("bpass", ss.CheckSum())
res.add("mid", ss.Get("mid"))
//send out //send out
res.sendJson(w) res.sendJson(w)
} }

+ 13
- 3
apiv1.go Просмотреть файл

return return
} }
session.RenewIfExpireSoon() session.RenewIfExpireSoon()
session.SetRemote(r) //make sure they are using latest remote
session.SetRemote(r) //make sure they are using latest remote
session.Add("mid", apiV1GetMachineId(r)) //set machine id
apiV1AddTrackingCookie(w, r, &session) // add tracking cookie to client


//we have a session now, either guest or valid user //we have a session now, either guest or valid user
//search through handler //search through handler
apiV1DumpRequest(w, r, &session) apiV1DumpRequest(w, r, &session)
} }


func apiV1InitSessionByBrowserId(w http.ResponseWriter, r *http.Request, session *loan.Session) {
func apiV1GetMachineId(r *http.Request) string {
var mid string var mid string
inCookie, e := r.Cookie("mid") inCookie, e := r.Cookie("mid")
if e == nil { if e == nil {
} else { } else {
mid = strconv.Itoa(int(time.Now().Unix())) + "-" + gofakeit.UUID() mid = strconv.Itoa(int(time.Now().Unix())) + "-" + gofakeit.UUID()
} }
return mid
}

func apiV1InitSessionByBrowserId(w http.ResponseWriter, r *http.Request, session *loan.Session) {
mid := apiV1GetMachineId(r)


var sid string var sid string
inCookie, e = r.Cookie("session")
inCookie, e := r.Cookie("session")
if e == nil { if e == nil {
sid = inCookie.Value sid = inCookie.Value
if sid != "" { if sid != "" {
session.Add("mid", mid) session.Add("mid", mid)
} }
} }
}


func apiV1AddTrackingCookie(w http.ResponseWriter, r *http.Request, session *loan.Session) {
//add tracking cookie //add tracking cookie
expiration := time.Now().Add(365 * 24 * time.Hour) expiration := time.Now().Add(365 * 24 * time.Hour)
cookie := http.Cookie{Name: "session", Value: session.Id, Expires: expiration} cookie := http.Cookie{Name: "session", Value: session.Id, Expires: expiration}
http.SetCookie(w, &cookie) http.SetCookie(w, &cookie)


mid := apiV1GetMachineId(r)
cookie = http.Cookie{Name: "mid", Value: mid, Expires: expiration} cookie = http.Cookie{Name: "mid", Value: mid, Expires: expiration}
http.SetCookie(w, &cookie) http.SetCookie(w, &cookie)



+ 1
- 0
main.go Просмотреть файл

ar.Env.Session.Bin = []byte("masked data") //clear ar.Env.Session.Bin = []byte("masked data") //clear
ar.Env.Session.Secret = "***********" ar.Env.Session.Secret = "***********"
ar.add("Body", dumpLines) ar.add("Body", dumpLines)
ar.add("mid", ss.Get("mid"))
b, _ := ar.toJson() b, _ := ar.toJson()
fmt.Fprintf(w, "%s\n", b) fmt.Fprintf(w, "%s\n", b)
} }

Загрузка…
Отмена
Сохранить