我正在使用Tank Auth,我的项目将支持两种访问类型:“普通用户”和“管理员”。我查看了 tank auth 数据库并且有一个“isadmin”字段,所以我相信它可能重定向到/admin
或/user
当我登录到我的系统时。
我怎样才能做到这一点?我只看到is_logged_in()
。
我已经看到了这个:http ://codeigniter.com/forums/viewthread/207245/但我只想要重定向到/user
或/admin
URL,这取决于管理员与否。
不幸的是,Tank_Auth 没有内置任何类型的用户组或权限功能。我不确定你在哪里看到了一个名为的字段,isadmin
因为它似乎不是当前默认设置的一部分,我什至不能在包文件中找到单词“admin”。
这是我能想到的最简单的解决方案:
is_admin
将您提到的字段添加到 users 表并手动管理它。
ALTER TABLE `users`
ADD COLUMN `is_admin` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0';
使用 Tank_Auth 当前的方式,您将从会话中读取用户数据,因此您必须在登录时将其添加到会话中。
// 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,
));
然后将自己的函数添加到库中:
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()
.
这是我可以提供的实现您目标的最短路径——可能不是最好的,但您可能对默认处理用户组的Ion_Auth感兴趣。