[英]How to redirect users to different pages based on their roles in Flask-login
如何根据用户在Flask登录中的角色将用户重定向到其他页面? 我正在尝试捕获“ flask.ext.login.user_logged_in”信号,但不确定如何在信号级别重定向flask。
def handle_user_logged_in(sender, user):
for r in user.roles:
if r.name == 'admin':
# This line doesn't work because it's not in a 'View'
return redirect('/admin')
user_logged_in.connect(handle_user_logged_in, app)
我想你想念url_for()
def handle_user_logged_in(sender, user):
for r in user.roles:
if r.name == 'admin':
return redirect(url_for('admin'))
user_logged_in.connect(handle_user_logged_in, app)
这可能会有所帮助。 我一直在不使用信号的情况下以相同的方式关注。
from flask.ext.login import current_user
def not_logged_in():
return render_to_template('home.html')
def view_fn():
if not current_user:
#Anonymous user
return redirect(url_for('not_logged_in'))
elif 'admin' in current_user.roles:
#admin page
else:
#default roles redirect
确保您具有角色字段的正确用户模型
https://flask-login.readthedocs.org/en/latest/#how-it-works
这个函数调用每个请求,因此,如果您想在所有view
函数中为anonymous user
应用通用逻辑,您甚至可以按照这种方式
@app.before_request
def before_request():
g.user = current_user
if not current_user:
print "user not logged in"
#if you return anything from here make sure to skip for login, signup views
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.