2012-12-26 66 views
3

嘗試啓用燒瓶安全驗證登錄。下面的代碼工作正常(我導入__init__.py使用Flask-Security進行燒瓶驗證

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是問題,但是,我不明白爲什麼。 HALP!

回答

7

想通了。原來,Flask-security已經內置了/login/logout,我的登錄功能在很大程度上被忽略了。在正常的應用程序執行過程中沒有使用它除了url_for仍然被處理,因此BuildError。

我試圖用一個來自https://github.com/dracule/FlaskBootstrapSecurity的過時示例,這是一個失敗。 Flask-Security已於3個月前更新。行動參數應該更新到action=url_for('security.login'),它會工作。

TL; DR添加url_prefix不會使用燒瓶安全的內置/login/logout和大量瓦爾被改名

+0

你應該接受你的答案,即使是你自己的。這樣它在SO上適當地顯示爲「回答」。 – exhuma