func (this *ConsultSessionAction) Post() { reqMsg := &ConsultSessionRequest{} if !this.GetReqJson(reqMsg) { return } rspMsg := &ConsultSessionResponse{} rspMsg.Init(reqMsg) rspMsg.SessionSeed = utils.RandStr() + "sessionId" rspMsg.SessionSeed = utils.EnCodeBase64(rspMsg.SessionSeed) rspMsg.SessionSeed = utils.Md5(rspMsg.SessionSeed) this.SendJson(rspMsg) }
func (this *sessionMgrImpl) login(req *http.Request, userName, pasword, hostIp, hostName string) (session *SafeSession, msgId string, ok bool) { session = nil msgId = comm.NULL_STR ok = false userName = strings.TrimSpace(userName) pasword = strings.TrimSpace(pasword) if userName == comm.NULL_STR || pasword == comm.NULL_STR { msgId = msg.MSG_PARA_ABSENT return } user, ok := UserMgr().getUserByName(userName) if !ok { msgId = MSG_USER_INVALID return } msgId, ok = UserMgr().isValid(user.GetId()) if !ok { return } pasword = utils.PasswordBySeed(pasword, user.GetId()) if user.Password != pasword { msgId = MSG_PASSWORD_ERROR ok = false return } if this.IsOnLine(userName) { this.Offline(userName) } clientOnlineLimit := LicenseMgr().GetAllowInt("clientOnlineLimit") activateClient := len(this.mapSessions) if activateClient >= clientOnlineLimit && !LicenseMgr().IsEmpty() { msgId = msg.MSG_LICENSE_NOENOUGH ok = false return } session = &SafeSession{} session.LoginUserId = user.Id session.LoginUserName = user.Name session.RandId = utils.RandStr() session.ConnTime = utils.StrTime() session.ClientIp = hostIp session.ClientHost = hostName session.ServerIp = req.Host session.ServerHost = req.Host session.KeepAliveTime = session.ConnTime session.SessionStatus = SAFE_SESSION_LOGIN session.Id = session.LoginUserName + "&" + session.ConnTime + "&" + utils.RandStr() session.Id = utils.EnCodeBase64(session.GetId()) session.Id = utils.Md5(session.GetId()) this.mapSessions[session.GetId()] = session db := ds.DB() defer db.Close() insertSql := "insert into fast.safeSession values($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11)" insertStmt, err := db.Prepare(insertSql) utils.VerifyErr(err) insertStmt.Exec( session.Id, session.RandId, session.ConnTime, session.LoginUserId, session.LoginUserName, session.ClientIp, session.ClientHost, session.ServerIp, session.ServerHost, session.KeepAliveTime, session.SessionStatus) insertStmt.Close() msgId = msg.MSG_SUCCESS ok = true return }