我正在使用Tank Auth,我的项目将支持两种访问类型:“普通用户”和“管理员”。我查看了tank auth数据库并且有一个“isadmin”字段,所以我相信当我登录我的系统时,它可能会重定向到/admin
或/user
。
我该怎么做?我只看到is_logged_in()
。
我已经看到了这一点:http://codeigniter.com/forums/viewthread/207245/但我只希望重定向到/user
或/admin
网址,具体取决于是否为管理员。
答案 0 :(得分:4)
不幸的是,Tank_Auth没有内置任何类型的用户组或权限功能。我不确定你在哪里看到一个名为isadmin
的字段,因为它似乎不是is_admin
的一部分{3}}我甚至在包文件中找不到“admin”这个词。
这是我能想到的最简单的解决方案:
将您提到的ALTER TABLE `users`
ADD COLUMN `is_admin` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0';
字段添加到users表并手动管理。
// Tank_Auth.php Line 71
$this->ci->session->set_userdata(array(
'is_admin' => (bool) $user->is_admin, // added
'user_id' => $user->id,
'username' => $user->username,
'status' => ($user->activated == 1) ? STATUS_ACTIVATED : STATUS_NOT_ACTIVATED,
));
使用Tank_Auth目前的方式,您将从会话中读取用户数据,因此您必须在登录时将其添加到会话中。
function is_admin()
{
return $this->logged_in() && $this->ci->session->userdata('is_admin') === TRUE;
}
然后将您自己的函数添加到库中:
// controllers/auth.php Line 30
function login()
{
if ($this->tank_auth->is_admin()) {
redirect('admin');
} elseif ($this->tank_auth->is_logged_in()) {
redirect('user');
}
// Rest of code stays untouched...
}
然后,您必须在登录时将其添加到登录控制器以进行重定向:
$this->tank_auth->is_admin()
然后让管理员控制器始终检查{{1}}。
这是我可以为实现目标而提供的最短路线 - 可能不是最佳,但您可能对处理用户的current default setup感兴趣默认情况下分组。