这是我一直在使用 tank_auth 的解决方案,它可能不是最好的,但我发现它对我很有效。
在控制器中
if (!$this->tank_auth->is_logged_in()){
$encoded_uri = preg_replace('"/"', '_', $_SERVER['REQUEST_URI']);
redirect('/login/'.$encoded_uri);
}elseif($this->tank_auth->is_logged_in(FALSE)){ // logged in, not activated
redirect('/user/reactivate/');
}else{
//Logged IN Stuff Here
}
修改 Tank Auth 登录功能 (controllers/auth.php)
function login($return_to = "")
{
if ($this->form_validation->run()) {
if ($this->tank_auth->login(
$this->form_validation->set_value('login'),
$this->form_validation->set_value('password'),
$this->form_validation->set_value('remember'),
$data['login_by_username'],
$data['login_by_email'])) {
//...Other Stuff Here
$decoded_uri = preg_replace('"_"','/',$return_to);
redirect($decoded_uri);
}
}
}
如果您的网址中有 _,您可能需要将 preg_replace 更改为其他内容,我只是使用它,因为它适用于我
编辑
我已经更新了这个功能,这是来自另一个项目的一个,我们对 tank auth 的东西进行了大量修改,所以如果东西有点不同,我很抱歉
至于传递 encode_uri 的东西,我在 routes.php 文件(config/routes.php)中添加了以下内容
$route['auth/login/(:any)'] = 'auth/login/$1';
$route['auth/login'] = 'auth/login'; //Probably don't need this one now