1

我正在使用Tank Auth,我的项目将支持两种访问类型:“普通用户”和“管理员”。我查看了 tank auth 数据库并且有一个“isadmin”字段,所以我相信它可能重定向到/admin/user当我登录到我的系统时。

我怎样才能做到这一点?我只看到is_logged_in()

我已经看到了这个:http ://codeigniter.com/forums/viewthread/207245/但我只想要重定向到/user/adminURL,这取决于管理员与否。

4

1 回答 1

4

不幸的是,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感兴趣。

于 2012-03-19T03:58:54.973 回答