问题陈述
我正在开发一个flask应用程序,它使用Stormpath进行身份验证。在我的应用程序中,我有两个用户组:normal users
和admins
。用户登录后,我想根据他们所属的组将他们重定向到特定页面。因此,如果用户是普通用户,他们将被重定向到/dashboard
,如果他们是管理员,他们将被重定向到/admin_dashboard
。到目前为止,我有STORMPATH_REDIRECT_URL = '/dashboard'
,所以每次他们登录时都会被重定向到/dashboard
,而不管他们属于哪个组。如何根据他们的Stormpath组将他们重定向到特定页面?
当前代码片段:
注意:我使用的是默认路径登录视图,该应用程序允许通过谷歌进行社交登录。你知道吗
/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")
解决方案
flask\u stormpath有一个
User
类,如here所示,它接受一个Account
作为参数。从stormpath-sdk-python
,我们可以看到一个Account
有一个has_group(self, resolvable)
函数,如here。你知道吗因此,为了在用户登录后显示特定页面,根据用户所属的组,我对
/app/dashboard/views.py
进行了以下更改,同时保持其他页面不变:相关问题 更多 >
编程相关推荐