如何配置Flask-Security阻止用户注册后自动登录并跳转至登录页?
注册后禁止自动登录并跳转至登录页
要实现注册完成后不自动登录、直接跳转至登录页的需求,你当前的配置和路由存在两处问题:
SECURITY_POST_REGISTER_VIEW指向的/login_redirect/路由添加了@login_required装饰器,注册后的用户尚未登录,访问该路由会被拦截,无法完成跳转- 未禁用Flask-Security默认的注册后自动登录行为
正确实现方案
1. 修改配置项
添加禁用自动登录的配置,并直接将注册后跳转目标设为登录页面:
app.config['SECURITY_REGISTERABLE'] = True app.config['SECURITY_CONFIRMABLE'] = False app.config['SECURITY_SEND_REGISTER_EMAIL'] = False app.config['USER_ENABLE_CONFIRM_EMAIL'] = False app.config['SECURITY_POST_LOGIN_VIEW'] = '/' # 禁用注册后自动登录 app.config['SECURITY_AUTO_LOGIN_AFTER_REGISTER'] = False # 直接设置注册后跳转至登录页 app.config['SECURITY_POST_REGISTER_VIEW'] = url_for('security.login')
2. 无需额外跳转路由
上述配置已满足需求,不需要定义/login_redirect/路由。如果一定要保留自定义路由(不推荐),需移除@login_required装饰器:
@app.route('/login_redirect/') def login_redirect(): return redirect(url_for('security.login'))
调整后,用户注册完成后系统不会自动登录,会直接跳转到登录页面。
内容的提问来源于stack exchange,提问作者Parth Jeet
相关产品推荐
相关产品推荐

