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

ale*_*nko 3 python authentication flask

尝试使用flask-security启用登录烧瓶.以下代码工作正常(我导入__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())
Run Code Online (Sandbox Code Playgroud)

但是,如果我改变user = Blueprint('user', __name__)user = Blueprint('user', __name__, url_prefix='/blah')失败了werkzeug.routing.BuildError BuildError: ('auth.authenticate', {}, None).url_for是问题,但是,我不明白为什么.HALP!

ale*_*nko 8

弄清楚了.事实证明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并且重命名了很多变量