【问题标题】:Are sessions safe to use to store permission information使用会话存储权限信息是否安全
【发布时间】:2018-07-05 17:35:16
【问题描述】:

我目前正在用 Django 编写一个应用程序,并且正在考虑在用户会话期间存储特定的权限信息。权限由以下值组成:

  • 无权限 - 0
  • 只读 - 1
  • 编辑 - 2
  • 添加和编辑 - 3
  • 完全权限 - 4

值越高,用户拥有的权限就越好。如果用户对模块“项目”只有“编辑”权限,我想将它存储在某个地方,这样我就不必让 Django 不断地查询数据库。使用以下内容是否合适;

request.session['project_permission'] = '2'

或者用户是否能够编辑此值并潜入更大的数字,例如 3 或 4?

【问题讨论】:

    标签: django session


    【解决方案1】:

    假设您使用的是 Django 的默认会话模型后端,用户将无法编辑任何与会话相关的数据。

    存储在客户端的唯一信息是 sessionid(在 cookie 中),它是 Django 会话表的主键。

    Django 会话表还有一个名为“session_data”的列,它存储哈希后的会话数据(用户无权访问,除非他们有权访问您的数据库)

    我不建议在会话中存储权限,有更好的方法来实现这一点。 此外,会话(默认 django 会话模型后端)数据存储在数据库中,因此正在进行间接查询

    【讨论】:

    • 谢谢 - 我将回到绘图板并使其基于查询,除非您有任何其他更好的方法。
    • 如果您可以共享您的数据模型,将能够推荐解决方案。一个用户对不同的项目会有不同的权限吗?还是像用户“X”有“只读”,所以他只能阅读所有项目
    • github.com/robotichead/NearBeach/blob/master/models.py 是模型文件。本质上,用户连接到一个组和一个权限集。可以为他们分配尽可能多的组/权限集。权限集定义了该用户将有权访问的内容,即项目。因此,是的,用户可能拥有不同的权限,具体取决于他们分配到的组及其权限集。希望这是有道理的。
    • 你的数据模型很大,我可能需要很长时间才能理解它们。无论如何,祝你的项目好运
    猜你喜欢
    • 2017-01-13
    • 2015-05-15
    • 2012-10-14
    • 2018-02-19
    • 2012-04-04
    • 2010-12-28
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多