python - Flask 如何将@login_required 重定向到特定路由?

标签 python authentication flask

我正在构建一个小型 Web 应用程序作为一个项目,我正在使用装饰器 @login_required目前它重定向到一条不存在的路由 /login如何手动设置路线?
这是我的代码:

@auth.route('/logout', methods=['POST'])
@login_required
def logout():
    session.pop("user", None)
    return redirect(url_for('index'))

最佳答案

使用 flask-login处理用户 session 。

(venv)$ pip3 install flask-login && pip3 freeze > requirements.txt
将此包添加到您的应用程序实例。这是 __init__.py文件或具有以下内容的文件:
from flask import Flask

app = Flask(__name__)

if __name__ == '__main__':
    app.run(host='0.0.0.0')
    
这是您添加它的方式:
# __init__.py

from flask import Flask
from flask_login import LoginManager

app = Flask(__name__)

login = LoginManager(app)
login.login_view = 'login'

from app import routes
我已通过 login查看功能到login目的。该函数是处理用户登录的函数。
from app import app
from flask_login import login_required


@app.route('/')
@app.route('/index')
@login_required
def index():
    return render_template('index.html')


@app.route('/login', methods=['GET', 'POST'])
def login():
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    form = LoginForm()
    if form.validate_on_submit():
        # Your code
    return render_template('login.html', form=form)
我已通过 login_required装饰师到 index()查看功能。用户每次想要访问索引页面,都会被重定向到登录页面进行身份验证,由login渲染。查看功能。登录成功后,此人才能访问索引页面。
欢迎通过 login_required可以匿名访问的任何其他函数的装饰器。我已经看到您正在使用蓝图。我的示例没有使用蓝图,尽管更新代码以使用蓝图应该相当容易。

关于python - Flask 如何将@login_required 重定向到特定路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67168922/

相关文章:

python - Scrapy,验证码登录失败

javascript - 使用 Flask 实现强制页面刷新的最佳方法是什么?

javascript - 如何使用 javascript 对 for 循环 jinja 模板字段执行计算

post - nginx 不会将 POST 数据转发到 uwsgi -- [更新] Flask 不会读取 POST 数据

python - 为什么某些 Django ORM 查询突然以消息 "Killed"结束?

python - Apache Airflow Logo 路径

python - Plotly:如何使用按钮以交互方式设置热图色标?

python - sudo easy_install pip 不工作

php - OAuth 和 Cookie

java - 绕过登录屏幕