 悬赏园豆:50
                [已解决问题] 
            
                    解决于 2015-11-10 17:16
                悬赏园豆: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 )
 }
 }
 
 }] );
原来是可以获取到的,变动的地方也只有这一个,还有一些文件的分布,但前端页面的分布,但前端页面的分布感觉和这个没什么关系
你是ajax提交的,不能使用session。在前端使用angular的项目中,一般不采用session认证,可以简单实现oauth认证。
在上一个项目中这么做还是可以的
@picapoo: 也是用的ajax?
@幻天芒: 找到问题了,之前在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>
<% } %>
后来的没有写。
@幻天芒: 不过这是经理写的,而经理已经走了,我想哭啊..
@picapoo: 感觉这样的做法比较危险了,前端存储member数据会不会很危险?
另外,既然你用Angular+API,那就直接前后端分离吧。
@幻天芒: 其实我只是个菜鸟,然后刚来公司一个多月,带我的师傅就GO了。我在师傅留下来的项目上继续做的,不明白的时候,就看只好看以前的项目作比对了。
这个确实是前后端确实是分离的。
@picapoo: 看你说的那种结构,在EJS中包含后端变量的用法,这前后端分离不彻底哦。