python - 使用 Flask-Security 进行 Flask 身份验证

标签 python authentication flask

尝试使用 flask-security 在 flask 中启用登录。以下代码工作正常(我在 __init__.py 中导入)

from flask import Blueprint, render_template, request, redirect, url_for
from coursly import app
from coursly.models import *
from flask.ext.security import Security, LoginForm, SQLAlchemyUserDatastore

user_datastore = SQLAlchemyUserDatastore(db, user.User, user.Role)
Security(app, user_datastore)

user = Blueprint('user', __name__)

@user.route('/')
def index():
    return redirect(url_for("user.login"))

@user.route('/login', methods=['GET', 'POST'])
def login():
    return render_template('user/login.html', content='Login Page', action=url_for('auth.authenticate'), form=LoginForm())

但是,如果我将 user = Blueprint('user', __name__) 更改为 user = Blueprint('user', __name__, url_prefix='/blah') 它因 werkzeug.routing.BuildError BuildError: ('auth.authenticate', {}, None) 而失败。 url_for 是问题,但是,我不明白为什么。哈普!

最佳答案

想通了。结果 Flask-security 已经内置了 /login /logout 并且我的登录功能在很大程度上被忽略了。在正常的应用程序执行期间不使用它。除了 url_for 仍被处理因此 BuildError。

我试图使用来自 https://github.com/dracule/FlaskBootstrapSecurity 的过时示例这是一个失败。 Flask-Security 已于 3 个月前更新。操作参数应更新为 action=url_for('security.login') 并且它将起作用。

TL;DR 添加一个 url_prefix 将不会使用 Flask-Security 内置的 /login /logout 并且很多变量被重命名

关于python - 使用 Flask-Security 进行 Flask 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14041672/

相关文章:

python - 字符串编码和解码?

Python - Pandas - 根据其他列中的值替换列中的字符串 - 处理子字符串

python - 加速 NumPy 中许多像素位置的线性插值

android - 仅在 Android 和 Blackberry 中使用 Facebook 身份验证?

django - 如何查找特定用户的 Django session ?

python - 开始自动化测试

python - CherryPy配置tools.staticdir.root问题

security - Saml 身份验证请求协议(protocol) ID

javascript - 如果没有返回语句,Flask session 不会保留由 ajax 设置的值

python - 使用 Python 请求 GET 不起作用 - Web 客户端和浏览器可以工作