Ошибка аутентификации при угловом входе - PullRequest
0 голосов
/ 03 июля 2018

Я НОВЫЙ для Angular. Я использую этот метод Angular для входа пользователя в систему.

loginuser(){
    const user = {
      username: this.username,
      password: this.password
    };
    this.Auth.loginUser(user).subscribe((res)=>{
      if(res){
        this.Auth.storeData(res.token, res.user);
        this.flashMessage.show('You are Successfully logged In.', { cssClass: 'alert-success', timeout: 5000 });
        this.router.navigate(['/userProfile']);
      }else{
        this.flashMessage.show('You are Password or Username not Correct.', { cssClass: 'alert-success', timeout: 5000 });
        this.router.navigate(['/login']);
      }

    });
  }

Но я получил сообщение об ошибке в моем редакторе VScode. enter image description here

И мой angular-cli также показывает эти ошибки. enter image description here Но в моей функции узла я четко определяю эти параметры. И это моя функция узла.

router.post('/login', (req, res)=>{
    const name = req.body.username;
    const password = req.body.password;
    //console.log(password);
    User.findByName(name,(err, user)=>{
        if(err) throw err;
        if(!user){
            res.json({state: false, msg:"No User Found"});
            //return false;
        }
        User.passwordCheck(password,user.password, (err, match)=>{
            if(err) throw err;

            if(match){
                const token = jwt.sign({User} , config.secret, {expiresIn:86400*3});
                res.json({
                    state: true,
                    token: "JWT" + token,
                    user:{
                        id:user._id,
                        name:user.name,
                        ID:user.ID,
                        IDexpDate: user.IDexpDate
                    }
                });    
            }else {
                res.json({state:false,msg:"password does not match"});
            }
        });

    });   
    console.log(password);
});

Я использую Angular версии 6 для разработки этого приложения. Я ищу это во многих областях, к сожалению, я не могу найти никакой проблемы, как эта. Я думаю, что мои сервисные функции также должны дать ответ, так что это мои сервисные файлы.

readonly baseURL ='http://localhost:3000/users/login';    
storeData(token,userdata){
    localStorage.setItem("tokenid",token);
    localStorage.setItem("user",JSON.stringify(userdata));
    this.authtoken = token;
    this.user= userdata
  }
  loginUser(user){
    let header = new HttpHeaders();
    header.append('Content-Type','application/json');

    return this.http.post(this.baseURL,user,{headers:header});
  }

Но когда я console.log записываю эти res.token и res.user, которые дают мне значения в моем журнале консоли. Моя проблема в том, почему этот редактор vscode показывает мне такую ​​ошибку. Большое спасибо за то, что вы уделили мне драгоценное время.

1 Ответ

0 голосов
/ 03 июля 2018

То, что вы определяете в Node для типов ответов, не переносится на ваш машинопись. Вы должны определить это вручную.

С помощью ссылок resp.user и resp.token Angular ожидает, что вы определите свой ответ для объявления этих объектов. Установив resp: any, вы говорите Angular, что на самом деле не нужно искать подходящие типы.

Если вы всегда ожидаете, что ваш ответ будет содержать пользователя и токен, было бы лучше объявить ответ:

resp: {
user: string,
token: string 
}
...