如何解决MEAN堆栈用户未登录错误?

时间:2016-05-23 07:05:47

标签: angularjs node.js passport.js mean-stack

我已经安装了MEAN.JS,我只使用服务器端代码。我没有使用前端角度代码。

我正在使用不同的服务器。对于前端(客户端)我维护一个服务器,后端(服务器端)我正在使用MEAN.JS。

注册和Signin工作正常但是当我创建文章时我收到错误

"用户未登录"我怎么能解决这个问题。请有人帮助我。

路线:

我的MEAN.JS路线下面的文章

app.route('/articles')       
    .get(users.requiresLogin,articles.list)
    .post(users.requiresLogin,articles.create);

控制器:

exports.create = function(req, res) {

    var article = new Article(req.body);
    article.user = req.body._id;
    article.save(function(err) {
        if (err) {
            return res.status(400).send({
                message: errorHandler.getErrorMessage(err)
            });
        } else {
            res.json(article);
        }
    });
};

中间件代码:

/**
 * Require login routing middleware
 */
exports.requiresLogin = function(req, res, next) {
    //console.log(req.body.id);

    if (!req.isAuthenticated()) {
        return res.status(401).send({
            message: 'User is not logged in'
        });
    }

    next();

};

我的前端代码:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://code.angularjs.org/angular-1.0.1.js"></script>
</head>
<body ng-app="myApp">
  <div ng-controller="MyCtrl"><br><br>
  <input type="text" ng-model="title"><br><br><br>
  <input type="text" ng-model="content"><br><br><br>
  <input type="button" ng-click="submit()" value="submit">
</div>
<script type='text/javascript'>//<![CDATA[

var myApp = angular.module('myApp',[]);
function MyCtrl($scope,$http) {
    $scope.submit = function()
    {
        var article= {

            title: $scope.title,
            content: $scope.content,

        };

    $http.post('http://192.168.1.6:3000/articles', article).success(function (response) {

        console.log(response);

      }).error(function (response) {
        $scope.error = response.message;
        console.log(response.message);
      });


    }
}

</script>

</body>

</html>

我认为中间件问题我该如何解决这个问题帮助我,我是这个全栈的新手

身份验证Passport方法:

req.isAuthenticated = function() {
  var property = 'user';
  if (this._passport && this._passport.instance) {
    property = this._passport.instance._userProperty || 'user';
  }

  return (this[property]) ? true : false;
};

0 个答案:

没有答案