【发布时间】:2021-06-04 19:48:54
【问题描述】:
我正在使用 Flask-Login 进行登录处理。此外,我为自己编写了一个装饰器,以保持仅对角色=管理员可见的视图。
def admin_required(f):
@wraps(f)
def wrap(*args, **kwargs):
if current_user.role.name == "admin":
return f(*args, **kwargs)
else:
flash("You need to be an admin to view this page.")
return redirect(url_for('home'))
return wrap
我可以将那个装饰器用于我的路线。但我不知道如何在我的烧瓶管理面板中使用这个装饰器。
Flask-SQLAlchemy 模型已添加到 flask-admin 视图中,例如:
from flask_admin.contrib.sqla import ModelView
from flask_admin import Admin
admin = Admin(app, name='admin', template_mode='bootstrap3')
admin.add_view(ModelView(User, db.session))
admin.add_view(ModelView(Role, db.session))
但我希望如果不是管理员的人点击:127.0.0.1:8000/admin 无法访问并被重定向到 /home。
但是我的 /admin 没有路由,当我实现一个时,我不知道应该返回什么 html?
谢谢
【问题讨论】:
-
看看这个,flask admin 很好地支持基于角色的访问flask-admin.readthedocs.io/en/latest/introduction/…
-
为什么不直接为 /admin 创建一个路由?为什么你没有管理员的路线?我已经通过将自定义管理装饰器放在我的管理路由上方来处理这个问题。然后,如果他们尝试访问该路由(基于您的装饰器功能),他们将被重定向到“家”
标签: python flask flask-sqlalchemy flask-admin