Cómo puedo redirigir después de mi método loginPost con autorización de encabezado (mi código jquery):
$(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"] } }) } }) }Controlador de vista de hoja de tomillo:
@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"; } }Después de recibir la solicitud, solo tengo una respuesta con la página hmtl, pero necesito redirigir la ruta de obtención con la representación de esta página. Si hago window.location="/api/user" tengo la respuesta 401.
En javascript puede cambiar la página a través de window.location.href = "http://www.example.com"; . En su caso, le sugiero que haga algo como window.location.href = "http://www.yoururl.com" + urlLogin; o algo como esto. Si desea redirigir usando solo php (en el lado del servidor), puede hacerlo configurando el encabezado Location . Puede configurar el encabezado de ubicación haciendo esto:
$path = "/admin"; header("Location: " . $path); o header("Location: /admin");
¡Que tengas un lindo día!