0

第一次使用 Tank Auth 和 HMVC。在我的应用程序中,有两种类型的用户,一种是学生,另一种是学院。
我为每种用户类型创建了两个模块并分离了 tank auth library ,用户的注册、登录和表都彼此不同。

现在,如果我尝试添加两个用户共同的任何其他页面,例如主页,应该使用哪个库。
我知道必须有更好的解决方案来处理多用户问题。请让我知道我在哪里做错了。我应该怎么做才能解决这个问题。

4

2 回答 2

1

你是对的,有更好的方法来处理这个问题。复制您的用户/注册系统是错误的方法。

您需要修改 TankAuth 以包含用户类型列,然后检查该用户类型。我建议在“users”表中为“user_role”添加一个新列:

https://github.com/ilkon/Tank-Auth/blob/master/schema.sql

您可以将 user_type 处理为 int 或 enum。我倾向于 int 因为 enum 以后更难改变。您也可以为 user_roles 添加一个新表,但我通常只是将它们存储在配置文件中。

更改架构后,您需要在 Tank_Auth 代码中添加对新列的引用(以及可能的选项)。您需要将其包含在创建、更新(数据从 tank auth 控制器传递到模型:controllers/auth.php)和查找功能中。我还将通过 user_role 查找 tank_auth 模型(应用程序/模型/tank_auth/users.php):

function get_user_by_role($role)
{
$this->db->where('LOWER(user_role)=', strtolower($role));

$query = $this->db->get($this->table_name);
if ($query->num_rows() == 1) return $query->row();
return NULL;
}

最后,您需要在登录时将用户角色设置为会话,以便您可以跟踪用户类型(以及他们有权访问的内容/功能)。

我自己在几个项目中使用了 Tank_Auth。

于 2011-12-26T15:51:54.880 回答
0

基于 calvin 所说的,codeigniter 可以很好地保护您的应用程序,tank auth 将验证它们,但是您需要不同的用户级别,这通常属于权限范围。作为开发人员,您的工作是确保 codeigniter 通过 CSRF 和 XSS 进行安全检查(我建议您在每个验证规则中执行此操作,而不是全局执行此操作,尤其是如果您的管理员需要添加任何不允许的标签,例如“脚本” )。无论我在这里的 Auth 库如何,您都可以看到我个人如何设置我的控制器...

您需要在您的用户表中有一个名为“权限”的行,它可以是序列化数组或 json 编码,或者您可以在权限位掩码上进行谷歌搜索,这需要一个 int 字段

于 2011-12-27T03:52:56.590 回答