如何使用 headers 重定向

How to redirect with headers

如何使用 header 授权(我的 jquery 代码)在我的 loginPost 方法后重定向:

$(document).ready(function (){

    $("#form-login").submit(function (event){
        event.preventDefault();

        let $form = $(this),
            email = $form.find("input[name='email'").val(),
            password = $form.find("input[name='password'").val();

        loginPost(email, password);

    })

    function loginPost(email, password) {
        $.ajax({
            url:"/api/auth/login",
            type:"POST",
            async:false,
            data: {email, password},
            success: function (data) {
                let urlLogin;
                if(data["role"] === "ROLE_USER") {
                    urlLogin = "/api/user"
                } else {
                    urlLogin = "/api/admin"
                }
                $.ajax({
                    url:urlLogin,
                    type:"GET",
                    async: false,
                    headers: {
                        "Authorization": "Bearer "+data["token"]
                    }
                })
            }
        })
    }

百里香叶 ViewController :

@Controller
@RequestMapping("/api")
public class ViewController {

   @PreAuthorize("hasRole('ROLE_USER')")
   @RequestMapping("/user")
   public String userPage() {
       return "user_page";
   }
   
   @PreAuthorize("hasRole('ROLE_ADMIN')")
   @GetMapping("/admin")
   public String adminPage() {
       return "admin_page";
   }

}

获取请求后,我只有 hmtl 页面的响应,但我需要重定向获取路由以呈现此页面。 如果我做 window.location="/api/user" 我有响应 401.

在 javascript 中,您可以通过以下方式更改页面 window.location.href = "http://www.example.com";。在你的情况下,我建议你做类似 window.location.href = "http://www.yoururl.com" + urlLogin; 或类似的事情。如果您只想使用 php(在服务器端)进行重定向,您可以通过设置 Location header 来实现。 您可以通过以下方式设置位置 header:

$path = "/admin";
header("Location: " . $path);

header("Location: /admin");

祝你有愉快的一天!