原文:Vue 2.0 起步(6) 后臺(tái)管理Flask-Admin - 微信公眾號(hào)RSS
http://www.reibang.com/p/56cbb68f8797#
原來(lái)我們的教程(6)郎任,只允許Admin用戶巫击,才能查看后臺(tái)。
為更直觀理解教程蓄拣,Demo網(wǎng)站暫時(shí)開(kāi)放后臺(tái)缨恒,普通用戶也可以查看后臺(tái)哦3枷(不能修改):
http://vue2.herokuapp.com/admin/article/
http://vue2.herokuapp.com/admin/mp/
實(shí)現(xiàn)方法很簡(jiǎn)單:
在Flask-Admin每個(gè)自定義ModelView的地方颅停,新加一個(gè)方法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
如果想禁止用戶查看某個(gè)Model,則直接檢查has_role('superuser'
就行铣猩。
比如:User數(shù)據(jù)庫(kù)
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')
請(qǐng)大家訪問(wèn)Demo網(wǎng)站時(shí)揖铜,不要用真實(shí)信息,這只是測(cè)試用的網(wǎng)站剂习!
如果想刪除敏感信息蛮位,可以私信我较沪。