问题陈述
我正在使用Stormpath进行身份验证的烧瓶应用。在我的应用中,我有两个用户组:normal users
和admins
。用户登录后,我想根据他们所属的群组将其重定向到特定页面。因此,如果用户是普通用户,他们会被重定向到/dashboard
,如果他们是管理员,则会将他们重定向到/admin_dashboard
。截至目前,我有STORMPATH_REDIRECT_URL = '/dashboard'
所以每次登录时,无论他们属于哪个群组,他们都会被重定向到/dashboard
。 如何根据Stormpath组将其重定向到特定页面?
当前代码片段:
注意:我使用默认的Flask-Stormpath登录视图,该应用程序允许通过Google进行社交登录。
/app/__init__.py:
def create_app(config_name):
...
# App config here
...
stormpath_manager = StormpathManager()
stormpath_manager.init_app(app)
...
return app
/config.py:
class Config(Object):
...
STORMPATH_REDIRECT_URL = '/dashboard'
...
/app/dashboard/views.py:
@dashboard_blueprint.route('/dashboard')
@login_required
@groups_required(['normal-users'])
def dashboard():
return render_template('dashboard/index.html', title="Dashboard")
@dashboard_blueprint.route('/admin_dashboard')
@login_required
@groups_required(['admins'])
def admin_dashboard():
return render_template('dashboard/admin_index.html', title="Admin Dashboard")
答案 0 :(得分:0)
<强>解强>
flask_stormpath有一个User
类,如here所示,它以Account
为参数。从stormpath-sdk-python
开始,我们可以看到Account
具有has_group(self, resolvable)
功能,如here所示。
因此,要在用户登录后根据用户所属的组显示特定页面,我对/app/dashboard/views.py
进行了以下更改,同时保持其他人不变:
from flask_stormpath import User
from flask_stormpath import current_user
@dashboard_blueprint.route('/dashboard')
@login_required
def dashboard():
if User.has_group(current_user, 'normal-users'):
return render_template('dashboard/index.html', title="Dashboard")
elif User.has_group(current_user, 'admins'):
return render_template('dashboard/admin_index.html', title="Admin Dashboard")
else:
return render_template('dashboard/error.html', title="Error Page")