Node.js не рендерится на chrome, но рендерит на почтальоне с аутентификацией JWT

Нужна помощь:(. У меня есть страница входа в систему. В части регистрации, пользователь может зарегистрироваться и должен пройти аутентификацию и получить токен, который хранится в локальном хранилище. После этого пользователь будет перенаправлен на страница профиля с токеном, но перед перенаправлением, так как страница профиля защищена. токен должен быть проверен. если проверен. он должен отображать страницу профиля. но это не рендеринг, и я не знаю почему. который даже выплевывает ошибки, но вот странная часть. когда я создаю учетную запись пользователя, я зарегистрировал токен JWT и скопировал его. использую его через почтальона. Прикрепил токен к заголовку, затем использовал маршрут профиля, который будет отображать HTML. но в chrome он не делает.

вот видео на YouTube, которое я сделал. https://www.youtube.com/watch?v=ufkor1eVxx8 Надеюсь, что кто-то может просветить меня

вот код для регистрации. (Я буду рефакторинг все).

'use strict';

    (function () {

        const signInForm = document.getElementById('signup-form');
        const username = document.getElementById('signup-username');
        const email = document.getElementById('signup-email');
        const password = document.getElementById('signup-password');
        const signUpBtn = document.getElementById('signup-btn');

        signUpBtn.addEventListener('click', (e) => {
            e.preventDefault();

            axios({
                method: 'post',
                url: '/signup',
                data: {
                    username: username.value,
                    email: email.value,
                    password: password.value
                }
            })
                .then(response => {
                    console.log(response.data) //check my response working

                    const token = response.data;

                    if(token) {
                        window.localStorage.setItem('access_token', token);
                        // window.location.assign('/profile');
                        axios({
                            method: 'get',
                            url: '/profile',
                            headers: {
                                'Authorization': `Bearer ${token}`,
                            }
                        }).then( res => {
                            console.log(res, 'afsdfas')
                            if(res.status === 200) {
                                console.log(res.data.decoded) // decoded JWT working
                            }
                        })
                        .catch( err => {throw err});

                    } else {
                        console.log('NO TOKEN');
                    }

                })
                .catch(err => { throw err });
        })
     }());

Вот код для профиля маршрута:

const express = require('express');
const router = express.Router();
const verifyToken = require('../helper.fn/verifyToken');
const jawt = require('../helper.fn/jwt.token');

router.get('/profile', verifyToken, (req, res) => {

    // console.log(req.token, 'test'); // token verified here. working.

    jawt.checkJWT(req.token)
    .then( userDecode => {
        console.log(userDecode); // user decoded info working

        if(userDecode) {
            console.log(userDecode, 'decode') // ! this will run working
            res.render('userprofile'); // ! THIS IS THE PROBLEM WONT RENDER
            console.log('gasdfas'); // ! this will run
           // res.json({userDecode}); this for testing this works
        } else {
            res.json({ err: 'sumthing is vrong'})
        }

    })
    .catch( err => { throw err})

});


module.exports = router;

вот код для проверки токена:

/**
 * this function checks if we a token attached to a header
 * @param {Object} req
 * @param {Object} res
 * @param {function} next
 */
module.exports = function(req, res, next) {
  const userToken = req.headers.authorization;

   console.log(userToken) // logs the bearer and token
  if (!userToken) {
    res.status(403).json({
      error: "FORBIDDEN"
  });
  } else {
    const token = userToken.split(' ')
    console.log(token[1]) i have the token here working
    req.token = token[1];
    next();
  }

};

0 ответов

Другие вопросы по тегам