【问题标题】:How to redirect with token after ajax如何在ajax之后使用令牌重定向
【发布时间】:2023-01-19 16:42:07
【问题描述】:

我使用 .ajax 从 (http://localhost:8080/authentication/login) 验证登录用户并获得令牌,在此之后,我想重定向到主页 (http://localhost:8080/home)使用我之前收到的令牌。

我实现了一个登录功能,其中我使用 ajax 进行身份验证,然后我再次尝试使用 ajax 成功重定向到主页。

这是登录功能

var token = "";
function login(email, password){
    $.ajax({
        url: "/authentication/authenticate", 
        type:'POST', 
        data: JSON.stringify({ "email": email, "password": password }), 
        headers: {"Content-Type":"application/json"},
        success: function(result){ 
            token = result;
            alert("success "+token);
            saveAuthData(token);
            $.ajax({
                url: "/home", 
                type:'GET', 
                headers: {"Content-Type":"application/json","Authorization":"Bearer "+token},
                success: function(result){ 
                    alert("success "+result);    
                    window.location.replace("/home");                
                },
                error: function(result){ alert("error "+result);}
        });
        },
        error: function(result){ alert("error "+result.statusText);}
        });
}

但它只是以字符串类型获取主页作为响应,但我想将 URL 重定向到 http://localhost:8080/home

【问题讨论】:

    标签: javascript ajax authentication redirect bearer-token


    【解决方案1】:

    如果你想使用 vanilla Javascript 将用户重定向到你网站上的一个新页面,那么你需要的是这个命令:

    window.location.pathname = "/home"
    

    这将重新加载浏览器窗口并导航到当前主机,但使用新路径。它还将保留您使用过的任何查询字符串。您可以使用window.location.href 设置一个全新的 URL,包括协议、主机、端口、路径和查询字符串。

    请记住,当您导航到新页面时,您无法发送 Authorization 标头。也就是说,浏览器不设置这个标头,所以如果你需要添加它,那么你必须使用 AJAX 调用。获得响应 HTML 后,您可以尝试在当前页面上交换它,例如:document.getElementById("main_div").innerHTML = responseBody

    您可能想看看一些 javascript 框架,因为它们通常为您要实现的这些行为提供了适当的解决方案。

    【讨论】:

      猜你喜欢
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 2017-09-19
      • 2016-03-15
      • 1970-01-01
      相关资源
      最近更新 更多