📅  最后修改于: 2021-01-02 04:30:08             🧑  作者: Mango
会话的概念与cookie的概念非常相似。但是,会话数据存储在服务器上。
会话可以定义为用户登录到服务器并注销的持续时间。用于跟踪此会话的数据存储在服务器上的临时目录中。
会话数据存储在cookie的顶部,并由服务器进行加密签名。
在烧瓶中,会话对象用于跟踪会话数据,该会话数据是一个字典对象,其中包含会话变量及其相关值的键值对。
以下语法用于将会话变量设置为服务器上的特定值。
Session[] =
要删除会话变量,请在会话对象上使用pop()方法,并提及要删除的变量。
session.pop(, none)
让我们看一个简单的示例,以了解如何设置和获取会话变量。
from flask import *
app = Flask(__name__)
app.secret_key = "abc"
@app.route('/')
def home():
res = make_response("session variable is set, Get Variable
")
session['response']='session#1'
return res;
@app.route('/get')
def getVariable():
if 'response' in session:
s = session['response'];
return render_template('getsession.html',name = s)
if __name__ == '__main__':
app.run(debug = True)
getsession.html
getting the session
The session is set with value: {{name}}
在这里,我们将在烧瓶中创建一个登录应用程序,并向用户显示以下主页。
如果我们在未登录的情况下直接单击view_profile,则它将显示一些警告,因为在没有登录的情况下我们无法直接访问该配置文件。
如果我们访问登录页面,那么应用程序将向用户显示登录页面,提示用户输入电子邮件ID和密码。在这里,我们的应用程序将用户重定向到成功页面,以获取下图所示的任何随机有效电子邮件ID和密码。
提交后,用户将重定向到下图所示的success.html 。
现在,如果我们访问配置文件页面,它将显示具有会话名称的消息,因为会话变量'email'被设置为其值。
现在我们登录到应用程序,因为我们已经登录到应用程序,所以现在无需登录应用程序就可以查看用户的个人资料。要进行测试,请返回主页并单击链接view_profile,我们将获得如上图所示的结果。
该应用程序使我们可以注销会话,为此,请单击注销按钮返回首页。它将销毁为此特定服务器设置的所有会话变量。
现在,用户必须再次使用电子邮件和密码登录才能在应用程序上查看配置文件。
这是一个使用Python flask构建的简单登录应用程序,用于实现会话。在此,烧瓶脚本login.py的行为就像主控制器一样,其中包含与URL映射相关的视图函数(home(),login(),success(),logout()和profile())。 / login,/ success,/ logout,/ profile)。
login.py
from flask import *
app = Flask(__name__)
app.secret_key = "ayush"
@app.route('/')
def home():
return render_template("home.html")
@app.route('/login')
def login():
return render_template("login.html")
@app.route('/success',methods = ["POST"])
def success():
if request.method == "POST":
session['email']=request.form['email']
return render_template('success.html')
@app.route('/logout')
def logout():
if 'email' in session:
session.pop('email',None)
return render_template('logout.html');
else:
return 'user already logged out
'
@app.route('/profile')
def profile():
if 'email' in session:
email = session['email']
return render_template('profile.html',name=email)
else:
return 'Please login first
'
if __name__ == '__main__':
app.run(debug = True)
home.html
home
Welcome to the website
login
view profile
Log out
login.html
login
success.html
success
Login successful
View Profile
logout.html
logout
logout successful, click here to login again