繁体   English   中英

如何根据用户在Flask-login中的角色将其重定向到其他页面

[英]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

在views.py中

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM