原文:Vue 2.0 起步(6) 后台管理Flask-Admin - 微信公众号RSS
http://www.jianshu.com/p/56cbb68f8797#
原来我们的教程(6),只允许Admin用户,才能查看后台。
为更直观理解教程,Demo网站暂时开放后台,普通用户也可以查看后台哦!(不能修改):
http://vue2.herokuapp.com/admin/article/
http://vue2.herokuapp.com/admin/mp/
实现方法很简单:
在Flask-Admin每个自定义ModelView的地方,新加一个方法is_accessible()
,作如下判断:
- 用户必须先登录
- 如果非admin用户,则只能查看,不能Create/Edit/Delete
/app/main/views.py
class MyModelViewMp(MyModelViewBase):
#column_select_related_list = ['subscribers',]
column_formatters = dict(
subscribers=lambda v, c, m, p: (m.subscribers_str), # '\n\p'.join
articles=lambda v, c, m, p: (m.articles_str),
)
column_searchable_list = (Mp.weixinhao, Mp.mpName, )
def is_accessible(self):
if not current_user.is_active or not current_user.is_authenticated:
return False
superuser = current_user.has_role('superuser')
editor = current_user.has_role('editor')
self.can_create = superuser
self.can_edit = superuser or editor
self.can_delete = superuser
return True
如果想禁止用户查看某个Model,则直接检查has_role('superuser'
就行。
比如:User数据库
class MyModelViewUser(MyModelViewBase):
#column_select_related_list = ['mps',]
column_formatters = dict(
password=lambda v, c, m, p: '**'+m.password[-6:],
mps=lambda v, c, m, p: (m.subscribed_mps_str), # '\n\p'.join
)
column_searchable_list = (User.email, )
def is_accessible(self):
if not current_user.is_active or not current_user.is_authenticated:
return False
return current_user.has_role('superuser')
请大家访问Demo网站时,不要用真实信息,这只是测试用的网站!
如果想删除敏感信息,可以私信我。