对于我的webapp,我使用的是带有items
的数据库表,一个带有users
的表和一个关联表user_items
。 user_items
表确定哪个用户应该有权访问哪个项目。它有两列user
和item
,每个列与各个表的外键关系。
该应用程序具有列出,读取,编辑,移动项目的功能。为这些功能分配单独的路线,例如@route('/item/<int:item_id>/edit')
目标
我的目标是仅限制对指定用户的项目访问权限(他们使用flask-user登录,并且他们的用户ID在会话变量中)。
我考虑的解决方案
我不想在函数本身中检查他们的权限,因为这需要在每个函数中添加代码并忘记该代码一次将授予所有用户访问权限。
我正在考虑通过@before_request
装饰器执行此操作,但这不会让我访问路径中的item_id
集,我将无法检查权限。
最好和最安全的方法是什么?是否可以在数据库层上实现它?我正在使用SQLAlchemy,有没有办法直接检查模型中的权限?