401 (Несанкционированный) ответ на почтовый метод - PullRequest
0 голосов
/ 08 ноября 2019

Я создаю веб-приложение node.js с Angular. У которого есть метод входа в систему, когда я вхожу с правильным адресом электронной почты и паролем, это дает мне токен. но когда я указываю неверный адрес электронной почты или пароль, он показывает мне 401 (неавторизованный) ответ на метод сообщения.

Вот мой метод входа в систему в угловом виде:

userLogin(username: string, password: string){
    const authData: AuthData = {
        email: username, 
        password: password
    }
    this.http.post<{token: string}>("http://localhost:3000/api/user/login", authData)
        .subscribe(response => {
        const token = response.token;
        this.token = token;
      });
  }

Метод сообщения Node.js:

router.post("/login", (req, res, next) => {
    let fetchUser;
    User.findOne({email: req.body.email})
        .then(user => {
            if(!user){
            //console.log('user not found');
            throw new Error("User profile not found");
        }
        fetchUser = user;
        return bcrypt.compare(req.body.password,user.password);
    })
    .then(result => {
        //console.log("Result " + result);
        if(!result){
            throw new Error("Password not match with user")
        }
        const token = jwt.sign(
               { email: fetchUser.email, userId: fetchUser._id},
               "secret_key_should_be_longer",
               { expiresIn: "1h"});
        //console.log("successfully log in");
        res.status(200).json({
            token: token
        });
    })
   .catch(err => {
       console.log("error occure !! " + err);
       res.status(401).json({
           message: err
       }
   );
});

Я также использовал перехватчик в angular, чтобы HTTPRequest использовал мой токен в другом сервисе.

export class AuthInterceptor implements HttpInterceptor{
    constructor(private authService: AuthService) { }
    intercept(req: HttpRequest<any>, next: HttpHandler) {
    const authToken = this.authService.getToken();
    const authRequest = req.clone({
        headers: req.headers.set("Authorization", "Bearer " + authToken)
    });
    return next.handle(authRequest);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...