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()