Codeigniter 为什么';t登录会话“;棍子;使用“登录时”;“爱奥尼亚服务”;窗口,但当我将浏览器指向www文件夹时会工作?
我正在使用Ionic在Codeigniter/Ion_Auth/Codeigniter restclient上构建一个登录系统,当我尝试从“Ionic server”登录时,登录正常,但对logged_in()方法的下一个api请求返回false 当我将浏览器指向www文件夹时,同样的事情也能正常工作 因此,问题是一步一步地解决的:Codeigniter 为什么';t登录会话“;棍子;使用“登录时”;“爱奥尼亚服务”;窗口,但当我将浏览器指向www文件夹时会工作?,codeigniter,cordova,ionic,ion-auth,codeigniter-restserver,Codeigniter,Cordova,Ionic,Ion Auth,Codeigniter Restserver,我正在使用Ionic在Codeigniter/Ion_Auth/Codeigniter restclient上构建一个登录系统,当我尝试从“Ionic server”登录时,登录正常,但对logged_in()方法的下一个api请求返回false 当我将浏览器指向www文件夹时,同样的事情也能正常工作 因此,问题是一步一步地解决的: 发球 您将看到登录表单() 输入电子邮件并通过 RESTAPI返回“登录成功” $state.go('app.profile')工作并重定向到 REST get a
似乎在使用“离子服务器”窗口时,对API的每个请求都会触发一个新会话。新的会话存储在数据库中,ion_auth根据最后一个会话测试登录的会话,该会话不包含登录详细信息。您正在学习REST api、cookie和会话。饼干和会议不符合休息哲学 让我告诉你我们是如何在项目中解决这个问题的。通过“Authorization”(授权)标头值可以知道哪个用户正在请求以及它是否具有访问权限。您可以使用基本身份验证,Barer或任何其他 我们通常更喜欢基于令牌的授权系统。登录成功后,服务器将发送一个令牌。在ionic应用程序中,我们使用名为
SessionService
的工厂保存它。所以,每当用户登录时,就会存储令牌并用于每个请求。但如果用户关闭应用程序,令牌将丢失。所以我们可以把它存储在本地存储器中。然后,用户可以直接重定向到仪表板,直到用户注销
app.factory("SessionService", function($window){
var user={};
if ($window.localStorage['user']!=undefined){
user=JSON.parse($window.localStorage['user']);
console.log(user);
}
return{
isLoggedIn:function(){
return !isEmpty(user);
},
logout:function(){
console.log("logout")
user={};
$window.localStorage.clear();
},
setUser:function(data){
user=data;
$window.localStorage['user']= JSON.stringify(user);
},
getUser:function(){
return user;
}
}
})
现在,在每个web请求中,当设置值Authorization
头时,可以调用SessionService.getUser().token
更新:
尽管不建议使用cookies,但您可以轻松地在应用程序中使用它
如果您使用CORS发送请求,angular不会随请求发送Cookie。
解决此问题的方法之一是在每个请求中发送with credentials:true
:
$http({withCredentials: true, ...}).get(...)
进一步了解这一点
希望这有帮助 你清楚这个问题吗?对我来说不是。我试过好几次去理解它,但事实上,这是模糊的。请澄清你有什么,你测试了什么,你的问题是什么。我添加了一个逐步的解释,希望它有助于规划更好地像那样。你如何配置你的cookie\u域
和cookie\u路径
我使用ion\u auth库为codeigniter。ion_auth使用codeigniter会话库发送浏览器应发回的cookie。这些cookie从未发送,因此使用cookie的身份验证只工作一次。第二个请求api获取一些数据会触发一个新会话,因为cookie没有被发送。会话存储在db中,当使用常规浏览器时,登录后对api的调用不会触发新会话虽然我同意Cookie不是使用api的最佳方式(此时我可能会尝试本地存储解决方案),但这并不意味着它们作为功能被删除。还是他们?据我所知,即使不推荐使用cookies,cookies也应该有效。