Паспорт Локальная стратегия не называется

1

Я использую angularJS + паспорт для проверки подлинности пользователя и, следовательно, я устанавливаю их ниже. 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>

На стороне клиента 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'));

Проблема, с которой я сталкиваюсь, заключается в том, что локальная стратегия вообще не называется, и я получаю Typerror: для локальной стратегии требуется проверка обратного вызова. Я не уверен, где я ошибся, будучи новичком в этом. Пожалуйста помоги.

Теги:
mean-stack
passport.js
passport-local

1 ответ

2
Лучший ответ

Ошибка, которую вы получаете, вызвана следующим:

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

Вы вызываете класс Strategy без каких-либо аргументов, поэтому это приводит к ошибке. Вы хотите сохранить ссылку на сам класс, например:

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

Кроме того, поскольку вы устанавливаете passReqToCallback: true, обратный вызов проверки будет принимать четыре аргумента, а не три. Он должен выглядеть так:

function(req, username, password, done) { ... }
  • 0
    Вы были абсолютно правы. Извините за глупую ошибку. Я исправил это, и теперь я не получаю Ошибка Типа, но я получаю 400 - Плохой запрос. Не могли бы вы дать мне знать, почему?
  • 0
    @Gayathri Я не уверен, правильно ли вы публикуете данные (возможно, не вызывайте JSON.stringify() , но я не слишком знаком с Angular, поэтому не уверен).
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню