使用tank_auth与多类型用户和HMVC

时间:2011-12-26 15:34:39

标签: php codeigniter hmvc tankauth

首次使用Tank Auth和HMVC。在我的申请中有2种类型的用户,一种是说学生,另一种是学院  我为每个用户类型创建了两个模块并将tank auth库分开,用户的注册,登录和表都彼此不同。

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

2 个答案:

答案 0 :(得分: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模型(application / models / 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进行了几个项目。

答案 1 :(得分:0)

建立在calvin所说的基础上,codeigniter可以很好地保护你的应用程序,tank auth会验证它们,但是你需要不同的用户级别,这通常属于权限。您作为开发人员的工作是确保codeigniter通过CSRF& amp ;;进行安全检查。 XSS(我建议你在每个验证规则中执行此操作,而不是全局,尤其是如果管理员需要添加任何不允许成为“脚本”的标记)。无论我的Auth库here...

如何,您都可以看到我个人设置控制器的方式

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