所以我在 CodeIgniter 中创建了我的第一个项目,我想知道是否有一种有效的方法可以根据用户所属的用户组来强制用户限制。
此应用程序中有 3 个用户组(管理员、教师和学生),每个用户组都有自己的权限。实现这一点的最佳方法是什么?
目前我只是将它放入会话变量中,并在几乎每一页上阅读它。有些东西告诉我必须有一种更简单的方法来做到这一点?
提前致谢。
亲切的问候
格伦
所以我在 CodeIgniter 中创建了我的第一个项目,我想知道是否有一种有效的方法可以根据用户所属的用户组来强制用户限制。
此应用程序中有 3 个用户组(管理员、教师和学生),每个用户组都有自己的权限。实现这一点的最佳方法是什么?
目前我只是将它放入会话变量中,并在几乎每一页上阅读它。有些东西告诉我必须有一种更简单的方法来做到这一点?
提前致谢。
亲切的问候
格伦
在数据库表中使用组 ID。并将其存储到会话中。并使用此组 ID 检查授权和身份验证。
如果将它放入控制器的构造函数中,它将在每个页面上被调用,但您不必在使用的每个方法中都调用它。
users 表中的简单组 ID 听起来对您的应用程序来说很好。然后,您可以像 catfish 所说的那样在控制器构造函数或特定方法本身中进行检查。
将来实现另一个表,如“权限”或“角色”或“范围”,将允许您在应用程序中创建细粒度权限。查看像 oauth 服务器的实现(https://github.com/alexbilbie/CodeIgniter-OAuth-2.0-Server)
function user_get($id)
{
$this->load->library('oauth_resource_server');
if ( ! $this->oauth_resource_server->has_scope(array('user.details', 'another.scope')))
{
// Error logic here - "access token does not have correct permission to user this API method"
}
// API code here
}
当您需要实际微调权限或在创建 RESTful API 时需要更灵活的权限时,这可能更适用。对于您当前的情况,可以在构造函数或方法中进行通用检查。