护照本地返回错误400错误请求与Angular [英] Passport local returns error 400 bad request with Angular

查看:97
本文介绍了护照本地返回错误400错误请求与Angular的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将护照集成到我的代码的登录表单中.客户端调用服务器端将按应有的方式工作,直到我在请求中调用"passport.authenticate",返回了400 Bad Request.我在这里想念什么.

I am trying to integrate passport to my code's login form. Client side calling server side works as it should until i call passport.authenticate in the request, 400 Bad Request was returned. What am I missing here.

HTML

        <div>
            <div class="row">
                <div class="input-field col s12">
                    <input id="user-email" type="text" ng-model="user.email">
                    <label for="user-email">Your email address</label>
                </div>
            </div>
            <div class="row">
                <div class="input-field col s12">
                    <input id="user-password" type="password" ng-model="user.password">
                    <label for="user-password">Your password</label>
                </div>
            </div>
            <div id="login-button-panel" class="center-align">
                <button class="btn" id="login-btn" ng-click="vm.login(user);">Login</button> 
            </div>
            <div class="section center">
                <a class="modal-trigger">Forgot password?</a>
            </div>
        </div>

JS

$http.post('/api/login',user).success(function(result){
    console.log(result)
})

server.js

server.js

passport.use(new LocalStrategy(
    function(username, password, done) {
        return done(null, false, {message:'Unable to login'})
    }
));
passport.serializeUser(function(user,done){
    done(null,user);
});

passport.deserializeUser(function(user,done){
    done(null,user);
});
app.post('/api/login', passport.authenticate('local'), function(req,res){
    res.json(req.user)
});

由于缺少对用户名和密码的访问权限,护照抛出了

推荐答案

错误的请求.

它正在检查正文和URL查询中的字段usernamepassword.如果其中一个是 fassy ,则该请求将被拒绝,状态为400.

It is checking body and URL query for fields username and password. If either is falsy the request is rejected with status 400.

在创建LocalStrategy时,您可以将其他选项中的选项集传递给构造函数,以使用选项usernameField和/或passwordField选择其他命名字段.在您的特定情况下,它看起来像这样:

On creating your LocalStrategy you may pass set of options in additional argument to constructor choosing differently named fields using options usernameField and/or passwordField. In your particular case this would look like this:

passport.use(new LocalStrategy(
    {usernameField:"user-email", passwordField:"user-password"},
    function(username, password, done) {
        return done(null, false, {message:'Unable to login'})
    }
));

这篇关于护照本地返回错误400错误请求与Angular的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆