Python 如何知道用户是否在Pyrebase和Flask中登录?

Python 如何知道用户是否在Pyrebase和Flask中登录?,python,firebase,flask,firebase-authentication,pyrebase,Python,Firebase,Flask,Firebase Authentication,Pyrebase,当用户登录时,如何仅加载/admin页面?我知道这与用户令牌有关,但我仍然不确定如何使用令牌来识别用户是否登录。此外,user和user\u id未在admin()中定义,仅在login()中定义,因为它们位于函数中 那么,为了在用户登录时只加载/admin页面,我需要在代码中更改什么呢?使用flask会话存储密钥,如果密钥存在,则用户已登录 您还可以全局访问单个会话的所有会话变量 app = Flask(__name__) firebase = pyrebase.initialize_app(

当用户登录时,如何仅加载
/admin
页面?我知道这与用户令牌有关,但我仍然不确定如何使用令牌来识别用户是否登录。此外,
user
user\u id
未在
admin()
中定义,仅在
login()
中定义,因为它们位于函数中


那么,为了在用户登录时只加载
/admin
页面,我需要在代码中更改什么呢?

使用flask会话存储密钥,如果密钥存在,则用户已登录

您还可以全局访问单个会话的所有会话变量

app = Flask(__name__)
firebase = pyrebase.initialize_app(config)
auth = firebase.auth()
db = firebase.database()

@app.route('/login', methods=["POST", "GET"])
    def login():
        message = ""
        if request.method == "POST":
            email = request.form["login_email"]
            password = request.form["login_password"]
            try:
                user = auth.sign_in_with_email_and_password(email, password)
                user = auth.refresh(user['refreshToken'])
                user_id = user['idToken']
                return redirect(url_for('admin'))
            except:
                message = "Incorrect Password!"
        return render_template("login.html", message=message)

@app.route('/admin')
def admin():
    return render_template("admin.html")

if __name__ == '__main__':
    app.run()

如果未分配
会话['usr']
,则它将给出密钥错误,这意味着usr in未登录。但请注意,在注销过程中,您需要删除该usr的会话。

谢谢您的回复。我想知道如何使用flask会话来知道用户是否登录到
admin()
。我应该使用
if session['usr']==”“:
还是其他什么?令牌也将过期,因此我还不确定在
admin()
中要做什么。非常感谢。抱歉,在
admin()
中如何?抱歉,我认为登录时出现问题。因此,在我从'try:user=auth.sign\u和\u email\u和密码(email,password)中删除了
try
except
之后,我得到了一个错误:RuntimeError:会话不可用,因为没有设置密钥。将应用程序上的密钥设置为唯一和机密的内容@尼哈尔,谢谢你!谢谢你的帮助,@Nihal,我终于明白了。我忘了你必须为会话设置secretkey
from flask import Flask, session, request
import requests
import os

app = Flask(__name__)
app.secret_key = os.urandom(24)
firebase = pyrebase.initialize_app(config)
auth = firebase.auth()
db = firebase.database()

@app.route('/login', methods=["POST", "GET"])
def login():
    message = ""
    try:
        print(session['usr'])
        return redirect(url_for('admin'))
    except KeyError:
        if request.method == "POST":
            email = request.form["login_email"]
            password = request.form["login_password"]
            try:
                user = auth.sign_in_with_email_and_password(email, password)
                user = auth.refresh(user['refreshToken'])
                user_id = user['idToken']
                session['usr'] = user_id
                return redirect(url_for('admin'))
            except:
                message = "Incorrect Password!"
        return render_template("login.html", message=message)

@app.route('/admin')
def admin():
    try:
        print(session['usr'])
        return render_template("admin.html")
    except KeyError:
        return redirect(url_for('login'))


if __name__ == '__main__':
    app.run()