未调用 Passport Local 策略
Passport Local strategy not called
我使用 angularJS+passport 来执行用户身份验证,因此,我在下面进行了设置。
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));
}
})
开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'));
我面临的问题是根本没有调用本地策略,我得到的只是类型错误:本地策略需要验证回调。我不确定我哪里出错了,我是新手。请帮忙。
您遇到的错误是由以下原因引起的:
var LocalStrategy=require('passport-local').Strategy();
^^
您在调用 Strategy
class 时没有任何参数,因此会导致错误。您想要存储对 class 本身的引用,如下所示:
var LocalStrategy=require('passport-local').Strategy;
此外,因为您正在设置 passReqToCallback : true
,验证回调将采用 四个 个参数,而不是三个。它应该是这样的:
function(req, username, password, done) { ... }
我使用 angularJS+passport 来执行用户身份验证,因此,我在下面进行了设置。 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));
}
})
开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'));
我面临的问题是根本没有调用本地策略,我得到的只是类型错误:本地策略需要验证回调。我不确定我哪里出错了,我是新手。请帮忙。
您遇到的错误是由以下原因引起的:
var LocalStrategy=require('passport-local').Strategy();
^^
您在调用 Strategy
class 时没有任何参数,因此会导致错误。您想要存储对 class 本身的引用,如下所示:
var LocalStrategy=require('passport-local').Strategy;
此外,因为您正在设置 passReqToCallback : true
,验证回调将采用 四个 个参数,而不是三个。它应该是这样的:
function(req, username, password, done) { ... }