Skip to content

Latest commit

 

History

History
106 lines (78 loc) · 3.63 KB

File metadata and controls

106 lines (78 loc) · 3.63 KB

14.2 Sesión

Capítulo VI, cuando vimos cómo utilizar la sesión lenguaje Go, también logró un sessionManger, beego marco basado SessionManager para lograr un cómodo manejo de las funciones de la sesión.

Integración Sesión

beego principalmente en las siguientes variables globales para controlar el manejo de sesión:

// En relación con la sesión
SessionOn bool	// si desea abrir el módulo de sesión, el valor predeterminado no está abierto
SessionProvider string	// sesión proporcionada, el valor predeterminado es SessionManager apoyó memoria
SessionName string	// nombre del cliente guardada en las cookies
SessionGCMaxLifetime int64	// cookies validity

GlobalSessions *session.Manager// controlador de la sesión / global

Por supuesto, los valores por encima de estas variables deben ser inicializado, también puede seguir el código para que coincida con el archivo de configuración para establecer estos valores:

if ar, err := AppConfig.Bool("sessionon"); err != nil {
	SessionOn = false
} else {
	SessionOn = ar
}
if ar := AppConfig.String("sessionprovider"); ar == "" {
	SessionProvider = "memory"
} else {
	SessionProvider = ar
}
if ar := AppConfig.String("sessionname"); ar == "" {
	SessionName = "beegosessionID"
} else {
	SessionName = ar
}
if ar, err := AppConfig.Int("sessiongcmaxlifetime"); err != nil && ar != 0 {
	int64val, _ := strconv.ParseInt(strconv.Itoa(ar), 10, 64)
	SessionGCMaxLifetime = int64val
} else {
	SessionGCMaxLifetime = 3600
}

In beego.Run funcionar para agregar el siguiente código:

if SessionOn {
	GlobalSessions, _ = session.NewManager(SessionProvider, SessionName, SessionGCMaxLifetime)
	go GlobalSessions.GC()
}

Mientras SessionOn establece en true, entonces se abrirá la sesión con la función por defecto para abrir un goroutine independiente para manejar la sesión.

Con el fin de facilitar nuestra costumbre Controller rápidamente utilizando la sesión, el autor beego.Controller proporciona los siguientes métodos::

func (c *Controller) StartSession() (sess session.Session) {
	sess = GlobalSessions.SessionStart(c.Ctx.ResponseWriter, c.Ctx.Request)
	return
}		

Sesión usando

A través del código anterior podemos ver, beego marco simplemente hereda la función de sesión, entonces cómo usarlo en su proyecto?

En primer lugar, tenemos que aplicar la sesión principal abierta de entrada:

beego.SessionOn = true

Podemos entonces el método correspondiente en el controlador para usar la sesión de la siguiente manera:

func (this *MainController) Get() {
	var intcount int
	sess := this.StartSession()
	count := sess.Get("count")
	if count == nil {
		intcount = 0
	} else {
		intcount = count.(int)
	}
	intcount = intcount + 1
	sess.Set("count", intcount)
	this.Data["Username"] = "astaxie"
	this.Data["Email"] = "[email protected]"
	this.Data["Count"] = intcount
	this.TplNames = "index.tpl"
}

El código anterior muestra cómo utilizar la sesión de la lógica de control, dividida principalmente en dos pasos:

  1. Obtenga objeto de sesión

     // Get the object, similar in PHP session_start()
     sess:= this.StartSession()
  2. utilizar la sesión para el funcionamiento general de valor de la sesión

     // Get the session values , similar in PHP $ _SESSION ["count"]
     sess.Get("count")
     
     // Set the session value
     sess.Set("count", intcount)

Como puede verse a partir del marco de código beego por encima de aplicaciones basadas desarrollaron utilizando la sesión bastante fácil, básicamente, y PHP para llamar a session_start() similar.

Links