我从here中获取了Flask Admin auth示例,并对其进行了一些更改。
我在下面的视图中添加了以下块,但它不显示“导出”按钮。我希望它将导出选项添加到管理视图中。它确实将---superuser
打印到控制台。
if current_user.has_role('superuser'):
can_export = True
print ' ---- superuser '
我以前多次使用导出功能。如果我将语句can_export = True
放在class MyModelView(sqla.ModelView):
的正下方,它将起作用。我将此用作基于用户角色控制对创建/编辑/etc的访问的示例。例如,我希望有一个只读角色,其中can_create=False,can_edit=False,等等
有人能帮忙吗?有人能告诉我我做错了什么吗?
==
这是整个视图。
# Create customized model view class
class MyModelView(sqla.ModelView):
def is_accessible(self):
if not current_user.is_active or not current_user.is_authenticated:
return False
if current_user.has_role('superuser'):
return True
return False
def _handle_view(self, name, **kwargs):
"""
Override builtin _handle_view in order to redirect users when a view is not accessible.
"""
if current_user.has_role('superuser'):
can_export = True
print ' ---- superuser '
if not self.is_accessible():
if current_user.is_authenticated:
# permission denied
abort(403)
else:
# login
return redirect(url_for('security.login', next=request.url))
==
作为参考:我把所有的代码here。
为了进一步扩展,我从上面继续以auth示例为基础,添加了一些简单的基于角色的访问控制。我希望这能帮助别人。
完整的代码是here。 如果你在这里看到一些不好的RBAC实践,我想听听。
主app.py文件是:
config.py是:
creds.py是:
要运行此命令,我建议您从上面的flask admin auth示例开始,然后将这些文件复制到该示例中。运行它应该创建一个包含用户和角色的数据库。另外,您可以在githublink上准备好所有代码。
根据上面@dirn的注释,添加
self.
修复了它。谢谢@dirn
相关问题 更多 >
编程相关推荐