English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Sesión de Flask (Session)

A diferencia de los cookies, los datos de sesión se almacenan en el servidor. La sesión es el intervalo de tiempo en el que el cliente se conecta al servidor y se desconecta. Los datos que se deben almacenar en esta sesión se almacenan en un directorio temporal en el servidor.

Asignar un ID de sesión a cada sesión del cliente. Los datos de sesión se almacenan en la parte superior del cookie, y el servidor los firma de manera encriptada. Para este encriptado, el aplicación Flask necesita una definición SECRET_KEY.

El objeto de sesión también es un objeto de diccionario que contiene pares de clave y valor con variables de sesión y valores asociados.

Por ejemplo, para configurar la variable de sesión 'username', utilice la siguiente instrucción -

# Nombre de archivo : example.py
# Derechos de autor : 2020 Por w3codebox
# Autor por: es.oldtoolbag.com
# Fecha : 2020-08-08
Session['username'] = 'admin'

Para eliminar la variable de sesión, utilice el método pop().

# Nombre de archivo : example.py
# Derechos de autor : 2020 Por w3codebox
# Autor por: es.oldtoolbag.com
# Fecha : 2020-08-08
session.pop('username', None)

El siguiente código es un simple ejemplo de cómo funciona la sesión en Flask. URL => '/Sugerencia: pida al usuario que inicie sesión, ya que la variable de sesión username no se ha configurado.

# Nombre de archivo : example.py
# Derechos de autor : 2020 Por w3codebox
# Autor por: es.oldtoolbag.com
# Fecha : 2020-08-08
@app.route('/)
 def index():
    if 'username' in session:
       username = session['username']
          return 'Logged in as ' + username + "<br>" + \
          "<b><a href="/logout'>click here to log out</">/b>"
    return "No ha iniciado sesión <br><a href="/login'></b>" + \
       "haga clic aquí para iniciar sesión</b></a>"

Cuando el usuario navega a URL=>'/cuando se llama a la función login() porque se llama mediante el método GET, se abre un formulario de inicio de sesión.

El formulario se envía nuevamente a URL=> /login, ahora la variable de sesión está configurada. La aplicación se redirige a URL=> /。 En este momento, encuentre la variable de sesión: username。

# Nombre de archivo : example.py
# Derechos de autor : 2020 Por w3codebox
# Autor por: es.oldtoolbag.com
# Fecha : 2020-08-08
@app.route('/@app.route('login', methods=['GET', 'POST'])
 def login():
    if request.method == 'POST':
       session['username'] = request.form['username']
       return redirect(url_for('index'))
    return '''
    <form action="" method="post">
       <p><input type="text" name="username"/></p>
       <p><input type="submit" value="Login"/></p>
    </form>
    '''

La aplicación también contiene una función de vista logout() que elimina el valor de la variable de sesión 'username'. Se realiza un redireccionamiento URL a '/‘ Muestra la página de inicio.

# Nombre de archivo : example.py
# Derechos de autor : 2020 Por w3codebox
# Autor por: es.oldtoolbag.com
# Fecha : 2020-08-08
@app.route('/logout')
 def logout():
    # Eliminar el nombre de usuario de la sesión si está allí
    session.pop('username', None)
    return redirect(url_for('index'))

Ejecute la aplicación y acceda a la página principal (asegúrese de configurar la clave secreta de la aplicación).

# Nombre de archivo : example.py
# Derechos de autor : 2020 Por w3codebox
# Autor por: es.oldtoolbag.com
# Fecha : 2020-08-08
from flask import Flask, session, redirect, url_for, escape, request
 app = Flask(__name__)
 app.secret_key = 'any random string’

El código completo se muestra a continuación -

# Nombre de archivo : example.py
# Derechos de autor : 2020 Por w3codebox
# Autor por: es.oldtoolbag.com
# Fecha : 2020-08-08
from flask import Flask
 from flask import render_template
 from flask import request
 from flask import make_response
 from flask import Flask, session, redirect, url_for, escape, request
 app = Flask(__name__)
 app.secret_key = 'fkdjsafjdkfdlkjfadskjfadskljdsfklj'
 @app.route('/)
 def index():
     if 'username' in session:
         username = session['username']
         return 'El nombre de usuario de inicio de sesión es:' + username + "<br>" + \
                  "<b><a href="/cerrar sesión aquí</">/b>"
     return "No ha iniciado sesión, <br><a href="/login'></b>" + \
          "Haga clic aquí para iniciar sesión</b></a>"
 @app.route('/@app.route('login', methods=['GET', 'POST'])
 def login():
     if request.method == 'POST':
         session['username'] = request.form['username']
         return redirect(url_for('index'))
     return '''
    <form action="" method="post">
       <p><input type="text" name="username"/></p>
       <p><input type="submit" value="Iniciar sesión"/></p>
    </form>
    '''
 @app.route('/logout')
 def logout():
    # Eliminar el nombre de usuario de la sesión si está allí
    session.pop('username', None)
    return redirect(url_for('index'))
 if __name__ == '__main__':
     app.run(debug=True)

La salida se mostrará como se muestra a continuación. Haga clic en el enlace: Haga clic aquí para iniciar sesión

El enlace se redirigirá a otra interfaz. Ingrese 'admin'.

La pantalla mostrará el mensaje: El nombre de usuario del usuario de inicio de sesión es: adminComo se muestra a continuación -