여권 로컬 반송 오류 400개의 잘못된 요청이 각도에 있습니다.
제 코드의 로그인 양식에 여권을 통합하려고 합니다.내가 여권을 부를 때까지 클라이언트 측 호출 서버 측은 정상적으로 작동합니다.authenticate in request, 400 Bad Request가 반환되었습니다.여기서 내가 놓치고 있는 게 뭐죠?
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
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 쿼리를 확인하는 중입니다.username
그리고.password
. 둘 중 하나라도 거짓이면 상태 400과 함께 요청이 거부됩니다.
Local Strategy를 작성할 때 옵션을 사용하여 다른 이름의 필드를 생성하거나 선택하도록 추가 인수에 옵션 집합을 전달할 수 있습니다.usernameField
및/또는passwordField
. 특정한 경우에는 다음과 같습니다.
passport.use(new LocalStrategy(
{usernameField:"user-email", passwordField:"user-password"},
function(username, password, done) {
return done(null, false, {message:'Unable to login'})
}
));
제 경우(Express 4.0) 바디파서를 사용하지 않았습니다.
이 오류는 바디파서를 사용하지 않고 요청 페이로드에 액세스하려고 할 때 발생합니다.
사용 -
var parser = require('body-parser');
var urlencodedParser = parser.urlencoded({extended : false});
app.post("/authenticate", urlencodedParser, passport.authenticate('local'), function (request, response)
{
response.redirect('/');
});
passport.use(new LocalStrategy(
{
usernameField: 'email',
passwordField: 'password'
},
function (email, password, done) {
db.collection('User').findOne({ email: email }, async function (err, user) {
console.log('user requested password caught in passport', password);
if (err) { return done(err); }
if (!user) { return done(null, false); }
const matchPassword = await comparePassword(password, user.password);
if (!matchPassword) { return done(null, false); }
return done(null, user);
});
}
));
app.post("/register",function(req,res){
Client.register({username:req.body.email},req.body.password,function(err,client){
if(err){
console.log(err);
res.redirect("/register")
}
else{
passport.authenticate("local")(req,res,function(){
console.log("success");
res.redirect("/secrets")
})
}
})
})
언급URL : https://stackoverflow.com/questions/34714202/passport-local-returns-error-400-bad-request-with-angular
'source' 카테고리의 다른 글
Oracle의 SQL Server에서 IDENTITY INSERT ON/OFF를 대체할 명령은 무엇입니까? (0) | 2023.09.27 |
---|---|
Angular2의 생산 모드와 개발 모드의 차이점은 무엇입니까? (0) | 2023.09.27 |
파이썬에서 "0, 0 == (0, 0)"이 "(0, False)"와 같은 이유는 무엇입니까? (0) | 2023.09.27 |
C의 여러 소스 파일은 정확히 어떻게 파일을 작동합니까? (0) | 2023.09.27 |
CSS 무단 회전 애니메이션 (0) | 2023.09.27 |