如何使用 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");
祝你有愉快的一天!
如何使用 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");
祝你有愉快的一天!