通过angular,node和mongoDB检查用户身份验证

时间:2018-04-02 06:59:09

标签: node.js angular mongodb

我使用Node(Passport.js)和mongoDB执行了用户身份验证。它运作良好。

现在我正在添加角度作为前端。

我将用户凭据从angular发布到节点api以获取响应,因为"成功"或"失败"但没有得到任何回应。

以下是代码:

ANGULAR PART:

app.component.html:

<form #loginForm="ngForm" (ngSubmit)="onSubmit(loginForm)">

<div class="form-group">
    <label for="email">Email</label>
    <input type="email" class="form-control" name="email" ngModel>
</div>

<div class="form-group">
     <label for="password">Password</label>
     <input type="password" class="form-control" name="password" ngModel>
</div>

<div class="form-group">
      <button type="submit">Submit</button>
</div>

</form>

app.component.ts:

import { Component } from '@angular/core';
import { FormBuilder, FormGroup, Validators, FormControl, FormArray } from 
      '@angular/forms';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {
    constructor(private httpClient: HttpClient) {};
    onSubmit(loginForm) {
       console.log(loginForm.value);
       let url = 'http://localhost:8080/login';
       this.httpClient.post(url, {loginForm(loginForm)},{responseType: 
           'text'}).subscribe(res => console.log(res));
    }
}

NODE PART:

routes.js:

app.post('/login', passport.authenticate('local-login', function (err,user) {
    if(err) {
        return err;
    }
    if(!user) {
        return 0;
    } else {
        return user;
    }
}));

passport.js:

passport.use('local-login', new LocalStrategy({
    usernameField : 'email',
    passwordField : 'password',
    passReqToCallback : true 
},
function(req, email, password, done) { 
    var newUser = new User();
    User.findOne({ 'email' :  email}, function(err, user) {
        if (err) {
            return done(err);
        }

        if (!user || !newUser.validatePassword(req.body.password, 
                 user.password)) {
            return done(null, false);
        } 
        return done(null, user);
    });

}));

现在来自angular的请求转到节点api&#34; http://localhost:8080/login&#34;但我没有从节点方面得到任何回复。

需要别人的帮助来解决这个问题。

提前致谢。

0 个答案:

没有答案