gpt4 book ai didi

python - 如何使用静态用户 ID 和密码将需要登录的装饰器集成到 flask 路由中?

转载 作者:行者123 更新时间:2023-12-05 02:11:32 25 4
gpt4 key购买 nike

我是 flask 和 python 的新手,我正在尝试添加所需的登录和主页以外的所有路由。我阅读了有关 flask-login 模块的信息,但没有取得任何成功。寻找建议!

我尝试使用 flask-login 并阻止访问“/data”路径。那没起效。我的登录要求很简单,如果用户密码是 admin/admin 就允许登录。并确保用户已登录所有后续路线。

这是我的 flask 代码

from flask import Flask, render_template, redirect, url_for, request
import subprocess
import os
import datetime
import time
app = Flask(__name__)


@app.route("/")
def home():
now = datetime.datetime.now()
timeString = now.strftime("%Y-%m-%d %H:%M")
templateData = {
'title' : 'HELLO!',
'time': timeString
}
return render_template('main.html', **templateData)


@app.route('/login', methods=['GET', 'POST'])
def login():
error = None
if request.method == 'POST':
if request.form['username'] != 'admin' or request.form['password'] != 'admin':
error = 'Invalid Credentials. Please try again.'
else:
return redirect(url_for('data'))
return render_template('login.html', error=error)

@app.route("/data")
def data():
now = datetime.datetime.now()
timeString = now.strftime("%Y-%m-%d %H:%M")
templateData = {
'title' : 'HELLO!',
'time': timeString
}
return render_template('api.html', **templateData)

if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True)

我不希望在没有以 admin/admin 身份登录的情况下访问/data 路由

最佳答案

flask_login 应该可以解决问题。在您希望当前未登录的用户无法使用的任何路由上导入并使用“@login_required”装饰器。

from flask_login import login_required

@app.route("/data")
@login_required
def data():
...
...

让装饰器远离任何不需要登录的路由。

由于您只需要通用身份验证,您可能会考虑 session 登录。

import secrets

app = Flask(__name__)
app.config['SECRET_KEY'] = secrets.token_hex(16)

以及flask session管理的使用示例。

from flask import session

@app.route('/login', methods=['GET', 'POST'])
def login():
error = None
if request.method == 'POST':
if request.form['username'] != 'admin' or request.form['password'] != 'admin':
error = 'Invalid Credentials. Please try again.'
else:
session['logged_in'] = True
return redirect(url_for('data'))
return render_template('login.html', error=error)

关于python - 如何使用静态用户 ID 和密码将需要登录的装饰器集成到 flask 路由中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57434775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com