Flask LoginManager没有调用正确的Login_View

时间:2015-02-28 19:01:01

标签: flask loginview

我的Flask App有一种非常奇怪的行为。

该应用基于Miguel Grinberg的tutorial

所以我定义了

lm.login_view = 'login'

我也有我的观点:

@app.route('/login', methods=['GET', 'POST'])
##@oid.loginhandler
def login():
    print "Login started"
    if g.user is not None and g.user.is_authenticated():
        print "first test passed"
        return redirect(url_for('index'))
    form = LoginForm()
    if form.validate_on_submit():
        print "submit done"
        session['remember_me'] = form.remember_me.data
        return oid.try_login(form.openid.data, ask_for=['nickname', 'email'])
    print "calling login"
    return render_template('login.html',
                           title='Sign In',
                           form=form,
                           providers=app.config['OPENID_PROVIDERS'])

但它没有被触发。 其他视图按预期工作,所以我插入了一些打印件,以便查看Flask正在做什么,但这里根本没有打印输出。

有趣的是,我总是得到这个标准输出,但我没有定义html:

Screenshot of website

我还使用了包含引导程序的基本布局,但这看起来非常裸露。

我还重命名了视图 lm.login_view ,但它根本没有被解雇。

你知道我在哪里可以搜索它或找到它吗?

1 个答案:

答案 0 :(得分:0)

我终于发现了我的登录视图未被触发的问题:

Map([<Rule '/register' (HEAD, POST, OPTIONS, GET) -> register>,
 <Rule '/logout' (HEAD, OPTIONS, GET) -> security.logout>,
 <Rule '/login' (HEAD, POST, OPTIONS, GET) -> security.login>,
 <Rule '/index' (HEAD, POST, OPTIONS, GET) -> index>,
 <Rule '/login' (HEAD, POST, OPTIONS, GET) -> login>,
 <Rule '/' (HEAD, POST, OPTIONS, GET) -> index>,
 <Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>,
 <Rule '/index/<page>' (HEAD, POST, OPTIONS, GET) -> index>])

正如您所看到的,我有2个登录规则,第一个指向security.login。 现在我发现这来自于导入烧瓶的安全扩展。