异步请求以加载/呈现新页面

时间:2021-05-25 21:07:34

标签: javascript node.js axios request rendering

我正在做一个项目,使用 firebase auth 登录,即 login with google;如果已登录,则重定向到 /app,其中存在 Web 应用程序的实际功能。

登录页面js:


document.getElementById('login').addEventListener('click', e => {
    var provider = new firebase.auth.GoogleAuthProvider();

    firebase.auth()
        .signInWithPopup(provider)
        .then((result) => {
            firebase.auth().currentUser.getIdToken(true).then(function(token) {
                //  make request to backend to get /app page where main app exists
                axios.get('/app', {
                    headers: { 'Authorization': `Bearer ${token}` } 
                })
                .then(res => {
                    console.log(res.data);
                });
            });
        });

});

现在我的主要动机是,如果标题中没有 JWT 令牌,用户将无法访问除 /(登陆页面)以外的页面。

所以这里当用户使用 login With google 登录时,它会在登录时提供令牌,然后它会使用令牌请求后端,后端将返回预渲染的 /app 页面!

问题:使用这是代码,当我请求后端时,它只返回 res.data 中的 HTML 代码,但我想要实际页面!!

Axios 可以很好地从我的后端 api 获取数据,但我无法弄清楚如何附加标题并生成请求,并获取页面而不是源代码作为响应;

同样的问题在应用程序中无处不在。我只是不希望用户访问页眉中没有 JWT 的着陆页以外的页面!

  • 后端:nodeJs
  • firebase 身份验证
  • 用于视图的 ejs 模板引擎

编辑:

返回源代码的意思是:
img of console log


欢迎任何帮助、想法或方法??

1 个答案:

答案 0 :(得分:0)

  1. 像以前一样登录
  2. 将令牌写入 cookie 而不是 Authorization 标头
  3. 将浏览器重定向到 /app
  4. 在后端读取 cookie 而不是 Authorization 标头

这样浏览器就会通过渲染响应来为你解决问题。使用 cookie 是不使用 AJAX 实现登录的常用方法。

无法进行重定向并设置授权标头。