原文:Vue 2.0 起步(6) 后臺管理Flask-Admin - 微信公眾號RSS
http://www.lxweimin.com/p/56cbb68f8797#
原來我們的教程(6),只允許Admin用戶,才能查看后臺。
為更直觀理解教程,Demo網站暫時開放后臺,普通用戶也可以查看后臺哦!(不能修改):
http://vue2.herokuapp.com/admin/article/
http://vue2.herokuapp.com/admin/mp/
non-admin.png
實現方法很簡單:
在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網站時,不要用真實信息,這只是測試用的網站!
如果想刪除敏感信息,可以私信我。