這是我一直使用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
}
修改坦克驗證登錄功能(控制器/ 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函數改變,如果別的東西你網址有_,我只是用它,因爲它適用於我
編輯
我已經更新的功能,這是一個從我們大量修改坦克權威性的東西的另一個項目,因此,如果東西是有點不同,我很抱歉
對於傳遞encode_uri的東西,我已經添加了以下的routes.php文件文件(配置/ routes.php文件)
$route['auth/login/(:any)'] = 'auth/login/$1';
$route['auth/login'] = 'auth/login'; //Probably don't need this one now
這是一個有趣的解決方案 - 我看到''編碼_uri'放在'/ login /'後面 - 然後你的Tank_auth函數有一個名爲'$ return_to'的arg - 你怎麼通過' $ encoded_uri'到Tank_Auth函數? – pepe
@torr,請參閱編輯。 –
@ torr,我也爲你更新了路線' –