首页 新闻 会员 周边 捐助

关于express+angularjs的session的获取问题

0
悬赏园豆:50 [已解决问题] 解决于 2015-11-10 17:16

做登陆功能的时候,在后台注册了session变量,可是在前台却无法获取,求各位园神帮帮忙!下面是我的代码

登陆界面的js:

.controller('loginCtrl',['$scope', 'host', 'security', function($scope, host, security){
$scope.init=function(){
//$(".row1").hide();
// $scope.showNum = 0;
$scope.refreshCaptcha('captcha');
$scope.user = security.user();
if($scope.user){
alert($scope.user);
}


};
$scope.memberInfo={};
$scope.memberInfo.number="";
$scope.memberInfo.password="";
$scope.memberInfo.captcha="";
$scope.login=function(){
host.post('/login', {id:$scope.memberInfo.number, password:$scope.memberInfo.password, captcha:$scope.memberInfo.captcha}, function(err,result){
if( result.state == 'success' ) {
alert('welcome to hotKidClub!');
window.location.reload();
console.log(result);

}
else { alert ( result.content ); $scope.refreshCaptcha('captcha') };
});
};
$scope.refreshCaptcha = function(id) {
document.getElementById(id).src = "/Captcha/?t=" + Math.random();
};

}] );

登陆界面的factory:security

.factory('security', [ function() {
return {
user : function() {
if(!window.member) return null;
return window.member;
},

update : function(name, obj) {
window[name] = obj;
}
}
}]);

前台API:

.factory('host', [ '$http', 'config', function($http , config) {
return {
post : function(url, parms, callback) {
$http({ method:'POST', url:config.host_url+url, data:parms })
.success(function(result) { callback(null, result); })
.error(function(err) { callback(err, null); })
},
get : function(url, parms, callback) {
$http({ method:'GET', url:config.host_url+url, params:parms })
.success(function(result) { callback(null, result); })
.error(function(err) { callback(err, null); })
}
}
}])

后台的API:

router.post('/login', securityBO.checkVerify, function(req, res, next) {
var memberId = req.body.id;
var password = req.body.password;
securityBO.login(memberId, password, req, function( result ) {
console.log( result );
res.send( result );
});
});

调用的login方法:

login : function(memberId, password, req, callback) {
if((!memberId) || (memberId=='')) return callback(sxutil.setFail('帐户名称不能空白'));
if((!password) || (password=='')) return callback(sxutil.setFail('密码不能空白'));
if(!(memberId=='aaa')||!(password=='000')){

callback(sxutil.setFail("用户名或密码错误"));
return
}

req.session.member = 'aaa';
//console.log(req.session );
req.session.save();
callback(sxutil.setSuccess(req.session.member));
},

上面就是相关的代码,求各位园主指教!感激感激!

问题补充:

这个是原来写的前端API:

.factory( 'DataAPI' , [ '$http' , 'config' , function( $http , config ){

return {
post : function( url , parms , success , error ){
$http( { method:'POST' , url:config.backend+url , data:parms } )
.success( success )
.error( error )
},
get : function( url , parms , success , error ){
$http( { method:'GET' , url:config.backend+url , params:parms } )
.success( success )
.error( error )
}
}

}] );

原来是可以获取到的,变动的地方也只有这一个,还有一些文件的分布,但前端页面的分布,但前端页面的分布感觉和这个没什么关系

KyleIsMe的主页 KyleIsMe | 初学一级 | 园豆:99
提问于:2015-11-10 09:38
< >
分享
最佳答案
0

你是ajax提交的,不能使用session。在前端使用angular的项目中,一般不采用session认证,可以简单实现oauth认证。

收获园豆:50
幻天芒 | 高人七级 |园豆:37207 | 2015-11-10 09:51

在上一个项目中这么做还是可以的

KyleIsMe | 园豆:99 (初学一级) | 2015-11-10 10:30

@picapoo: 也是用的ajax?

幻天芒 | 园豆:37207 (高人七级) | 2015-11-10 11:00

@幻天芒: 找到问题了,之前在layout.ejs文件中有这样一段

<% if(account) { %>
<script>
window.member = <%- JSON.stringify(account) %>
var _init = function(){
var _member = window.member;
//console.log( _member )
if( !_member || typeof( _member.address_b )=='number' || typeof( _member.address_c )=='number' ) return;
$.get( './convertAddr', { address_b:_member.address_b,address_c:_member.address_c }, function( result ) {
if(result.code>0) { console.log(result.msg); return; }
window['member'].address_b_2 = result.content.address_b;
window['member'].address_c_2 = result.content.address_c;
});
}
_init();

</script>
<% } %>

后来的没有写。

KyleIsMe | 园豆:99 (初学一级) | 2015-11-10 11:38

@幻天芒: 不过这是经理写的,而经理已经走了,我想哭啊..

KyleIsMe | 园豆:99 (初学一级) | 2015-11-10 11:39

@picapoo: 感觉这样的做法比较危险了,前端存储member数据会不会很危险?

另外,既然你用Angular+API,那就直接前后端分离吧。

幻天芒 | 园豆:37207 (高人七级) | 2015-11-10 13:07

@幻天芒: 其实我只是个菜鸟,然后刚来公司一个多月,带我的师傅就GO了。我在师傅留下来的项目上继续做的,不明白的时候,就看只好看以前的项目作比对了。

这个确实是前后端确实是分离的。

KyleIsMe | 园豆:99 (初学一级) | 2015-11-10 17:16

@picapoo: 看你说的那种结构,在EJS中包含后端变量的用法,这前后端分离不彻底哦。

幻天芒 | 园豆:37207 (高人七级) | 2015-11-10 17:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册