【问题标题】:Codeigniter: Storing User's role in SessionCodeigniter:在会话中存储用户的角色
【发布时间】:2010-09-25 08:56:59
【问题描述】:

在 Codeigniter 的会话中存储用户的角色是否安全?

角色将决定用户将拥有什么功能;即是管理员、普通订阅者或高级用户。

我还将会话存储在数据库中以提高安全性,但我想知道是否应该使用备用路由,例如查询用户的 id 并检查他们的角色,但我相信只需更进一步在身份验证中。

请指教。

【问题讨论】:

    标签: php session codeigniter


    【解决方案1】:

    是的,这很安全。如果它存储在数据库中,用户几乎无法篡改数据。

    【讨论】:

      【解决方案2】:

      将角色存储在会话中以避免一直查询它应该没问题,如果它主要是静态的。

      只需考虑在会话有效(登录或未过期)时编辑用户角色的边缘情况下该怎么做。会话是否应该对他无效,所以他必须重新登录?还是让您的应用程序知道该角色现在已过时并且应该从数据库中刷新?

      【讨论】:

      • 我在 Codeigniter 中使用 Tank Auth。我不确定我的应用程序如何使会话无效,但它确实使用了数据库,所以正如 Matthew 所说,我应该是安全的,这是我真正希望的。
      • @Anraiki 我的意思是:假设用户 X 已登录并且您更改了他的角色。会话处理程序如何知道从数据库中刷新它以获取更改的角色?也许您需要一种方法使该用户的会话无效,以便他可以重新登录,或者知道从数据库中获取新角色的方法
      • 我认为你把事情复杂化了。如果他们想将角色从 'user' 更改为 'admin',可以使用类似 $this->session->set_userdata('role', 'admin') 的函数。您还需要将其保存到相应的用户行,以便他们在不同时间登录时正确反映。
      • @Matthew 如果您作为管理员登录到站点并更改用户的角色,您将如何访问该用户的会话? $this->session 将访问您的会话。这确实是一个边缘情况,因为它很少发生,您可以设置一个用户属性来通知用户重新登录。我只是想我会把它作为思考的食物。每当您积极缓存内容时,您都需要一种远程使缓存无效的方法。
      猜你喜欢
      • 2010-12-12
      • 1970-01-01
      • 2014-02-02
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多