【问题标题】:Check user Group Level via session or database?通过会话或数据库检查用户组级别?
【发布时间】:2011-05-30 14:09:59
【问题描述】:
客户或管理员登录后,他们的 member_id 将存储在会话中 ($_SESSION['member_id'])
有多个组级别,最好这样存储在会话中:
$_SESSION['group_id'] = 2;
还是从数据库中检查组级别?
SELECT group_id FROM users where member_id = . $_SESSION['member_id'];
我已经为前端编写了用户登录类,后端使用相同的类有什么问题吗?
【问题讨论】:
标签:
php
security
authentication
login
【解决方案1】:
如果您将 member_id 存储在会话变量中,为什么没有 group_id ?会话变量允许您在请求之间保持数据的持久性,这似乎正是您所需要的。
虽然有些人确实建议将会话数据保持在最低限度,即:
$_SESSION['uid'] = 5;
$_SESSION['logged_on'] = true;
我不会考虑将 group_id 作为会话变量的错误使用,因为在您的情况下 member_id 取决于 group_id 来做任何事情。
【解决方案2】:
两者之间的主要区别在于,在第一种情况下,对用户组的更改可能仅在下一个会话中可见(例如,用户已登录,并且管理员更改了组),而在另一种情况下,他们将立即生效。