尝试使用 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/