我正在寻找一种方法来做这两件事,首先我想在没有找到SessionID的情况下将用户重定向到登录页面,其次我想听听你对仅在内存中保存会话ID的看法(没有cookie).
我想出的重定向解决方案是:
1 - 创建一个名为OAuth的服务,它将检查SessionID是否存在,如果不存在,则重定向到登录页面,该服务还负责登录和注销方法.
app.factory('OAuth', ['$http', function ($http) {
var _SessionID = '';
return {
login: function () {
//Do login ans store sessionID in var _SessionID
},
logout: function () {
//Do logout
},
isLoggedIn: function () {
if(_SessionID) {
return true;
}
//redirect to login page if false
}
};
}]);
Run Code Online (Sandbox Code Playgroud)
2 - 在每个控制器中注入新的OAuth服务,并检查用户是否为LoggedIn
app.controller('myCtrl', ['$scope', 'OAuth', function ($scope, OAuth) {
//check if user is logged
OAuth.isLoggedIn();
}]);
Run Code Online (Sandbox Code Playgroud)
问题:
1 - 将在所有控制器中调用isLoggedIn()方法,因此我想知道是否有办法在不必注入服务的情况下执行此操作并在每个控制器中调用它.
2 - 我没有使用cookie存储sessionID,而是将其保存在OAuth的_SessionID变量中,并且每个请求都将其发送到服务器.这是一种可行/安全的方法吗?你能给我一些想法吗?
谢谢!
我可能在这里遗漏了一些东西,但我无法使这个JSONP请求工作,这里是代码:
var url = 'http://' + server + '?callback=JSON_CALLBACK';
$http.jsonp(url)
.success(function(data){
console.log('success');
})
.error(function () {
console.log('error')
});
Run Code Online (Sandbox Code Playgroud)
该请求触发正常,我以这种格式获得响应(带有标题Content-Type:application/json):
[{"id": "1", "name": "John Doe"},
{"id": "2", "name": "Lorem ipsum"},
{"id": "3", "name": "Lorem ipsum"}]
Run Code Online (Sandbox Code Playgroud)
你能看到什么问题吗?也许我应该从服务器返回的格式不对?Angular会触发错误回调,除了我设置的错误消息之外没有任何错误消息('错误').
我file_get_contents()用来从远程服务器中提取一些图像,我想在进一步处理之前确认结果字符串是否是JPG/PNG图像,比如在本地保存并创建拇指.
$string = file_get_contents($url);
Run Code Online (Sandbox Code Playgroud)
你会怎么做?
当页面被加载时,向用户呈现一组产品,然后如果他/她点击按钮,则获取更多产品并将其附加到列表中.我试图找到一种Angular方式来放置一行来分隔最近附加的已经加载的产品.我不想直接操作DOM而且我不能将空行推送到产品数组,因为数组的长度在其他地方使用.
我怎么能这样做?