Gayathri
Gayathri

Reputation: 1896

Passport Local strategy not called

I use angularJS+passport to perform user authentication and hence, i set up these below. HTML:

<div ng-controller="logincontroller">
<form>
Email:<input type="text" ng-model="user.email"/>
Password:<input type="password" ng-model="user.password"/>
<div ng-click=loginUser()>Submit</div>
</form>
</div>

In client side javascript:

  app.controller('logincontroller',function($scope,$http){
    $scope.loginUser=function(){
    $http.post('/loginUser',JSON.stringify($scope.user));
   }
   })

ON app.js

var bodyParser = require('body-parser');
var cookieParser=require('cookie-parser');
var passport=require('passport');
var LocalStrategy=require('passport-local').Strategy();
var session=require('express-session');
app.use(express.session({secret:"flibbertygibbit"}));
app.use(cookieParser());
app.use(passport.initialize());
app.use(passport.session());
app.use(bodyParser.json());
passport.use(new LocalStrategy(
    {usernameField: 'user.email',
    passwordField: 'user.password',
    passReqToCallback: true
  },
    function(username,password,done){
      console.log("am here"+username+" "+password);

}
))


app.post('/loginUser',passport.authenticate('local'));

The problem i face is the Local strategy isnot being called at all and all I get Typerror: Local strategy requires a verify callback. I ain't sure where i went wrong, being novice at it. Please help.

Upvotes: 2

Views: 1682

Answers (1)

robertklep
robertklep

Reputation: 203286

The error you're getting is caused by this:

var LocalStrategy=require('passport-local').Strategy();
                                                    ^^

You're calling the Strategy class without any arguments, so this results in the error. You want to store a reference to the class itself, like this:

var LocalStrategy=require('passport-local').Strategy;

Also, because you're setting passReqToCallback : true, the verification callback will take four arguments, not three. It should look like this:

function(req, username, password, done) { ... }

Upvotes: 2

Related Questions