我正在使用CodeIgniter控制器功能。 (实施例)
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Me extends CI_Controller {
public function __construct()
{
parent::__construct();
if (is_logged_in()){if (is_admin()) { redirect('login'); }}
else { redirect('login');}
}
public function change_password()
{
$id=$this->session->userdata['user_data']['id'];
$data = json_decode(file_get_contents("php://input"));
$my_data=array(
'pass'=>$data->pass,
'new_pass'=>$data->new_pass,
);
$result=$this->vanesh_model->change_pass($id,$my_data);
if($result==1)
{
$arr = array('msg' => "Password changed successfuly.", 'error' => '');
$jsn = json_encode($arr);
print_r($jsn);
}
else if($result==2)
{
$arr = array('msg' => "", 'error' => 'Old Password is Invalid');
$jsn = json_encode($arr);
print_r($jsn);
}
else if($result==3)
{
$arr = array('msg' => "", 'error' => 'Sorry, Password change failed');
$jsn = json_encode($arr);
print_r($jsn);
}
}
}
?>
我害怕使用角度会话服务,所以我想维持只有CI的会话。我在我的应用程序中所做的只是在他登录时添加,更新,删除。我使用的是存储在会话中的信息。考虑一下这种情况,假设我已经登录并做了一些事情:我使用浏览器工具销毁会话。现在我继续申请(执行以下操作:更改密码)。我已经/已经保留了错误消息,成功消息,确定。如果会话关闭,则会显示错误消息。但是,我想重定向到LOGIN页面(页面刷新),而不是错误消息。 注意:对于CI登录控制器,我没有使用角度js。我在登录后才使用angularjs。
http://localhost/ums/login
这是因为CI构造函数(请查看代码)。答案 0 :(得分:0)
你应该尽可能地分离角度和CI,因为它们都有视图控制器,它会造成混乱。相反,你应该在一个单独的文件夹中使用CI,例如,在它之后,你需要从CI获得的任何内容都应该从带有ajax调用的angular中获取。
我不久前制作了一个小型webapp,这似乎是组织代码的最佳方式。 从那时起几乎没有对角度进行更新,所以如果有更好的方法请告诉我
答案 1 :(得分:0)
<强>解决。强> 使用javascript函数。 每次按http请求检查会话。如果响应为“1”。表示重定向登录为:
/* function for checking logged-in and role */
function check_session()
{
$.get("servercontroller/check_session", function(data, status){
if(data=="1") /* error 1 => un-athorized user */
{
window.location.href="/login-page-url";
}
});
}