欢迎页面未加载 JWT
Welcome page not loading with JWT
我正在使用 Spring Boot with ExtJS 和一个 /login 页面,它是一个普通的 JSP 和一些 JQuery javascript。我正在尝试集成 JWT 来保护我的数据 api。使用我能找到的实现 JWT 的东西,我实现了 JWTRequestFilter 并从 Spring 安全性中删除了 built-in 登录流程。
我的登录表单现在向 /authenticate 方法发出 $ajax POST 请求,该方法 returns 在响应中返回一个令牌。当我在 Postman 中手动设置身份验证 header 并触发 /welcome 页面的 GET 请求时,我得到了有效响应...
以下代码是我尝试使用令牌更新 header 并获取 /welcome 页面的方式。我收到 401 错误,因为当我尝试使用此代码访问页面时缺少身份验证 header...
$form.on('submit', function(e) {
e.preventDefault();
$.ajax({
url: $form.attr('action'),
type: 'POST',
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify(dat),
success: function(result) {
var d = new Date();
d.setTime(d.getTime() + (3*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
// $('head').append('<meta name="Authorization" content="Bearer ' + result.token + '"');
window.localStorage.setItem("Authorization", "Bearer " + result.token);
// document.cookie = "Authorization=Bearer "+result.token + ";" + expires + ";path=/;httpOnly";
window.location="/welcome";
} error: funciton() {}
);
我试过将令牌放在 cookie 中(由于格式原因,Tomcat9 忽略了它)。我现在正在单独研究这个问题。
我也尝试为欢迎页面制作一个 XMLHttpRequest(),这让我恢复了原始 HTML,但我不确定是否需要使用此响应以某种方式重新加载 DOM。 ..
在响应中获取授权令牌的最佳方法是什么,并将其放入 header 以用于 /welcome 页面的后续 /GET?
您没有以正确的方式添加 headers。要添加 headers,您需要使用 beforeSend()
:
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Bearer " + JWT);
},
需要发送这个选项。另外,这里的 JWT
表示 JWT,令牌和 xhr
是 XMLHttpRequest
原始 object。此选项应发送到 $.ajax()
的参数。
我正在使用 Spring Boot with ExtJS 和一个 /login 页面,它是一个普通的 JSP 和一些 JQuery javascript。我正在尝试集成 JWT 来保护我的数据 api。使用我能找到的实现 JWT 的东西,我实现了 JWTRequestFilter 并从 Spring 安全性中删除了 built-in 登录流程。
我的登录表单现在向 /authenticate 方法发出 $ajax POST 请求,该方法 returns 在响应中返回一个令牌。当我在 Postman 中手动设置身份验证 header 并触发 /welcome 页面的 GET 请求时,我得到了有效响应...
以下代码是我尝试使用令牌更新 header 并获取 /welcome 页面的方式。我收到 401 错误,因为当我尝试使用此代码访问页面时缺少身份验证 header...
$form.on('submit', function(e) {
e.preventDefault();
$.ajax({
url: $form.attr('action'),
type: 'POST',
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify(dat),
success: function(result) {
var d = new Date();
d.setTime(d.getTime() + (3*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
// $('head').append('<meta name="Authorization" content="Bearer ' + result.token + '"');
window.localStorage.setItem("Authorization", "Bearer " + result.token);
// document.cookie = "Authorization=Bearer "+result.token + ";" + expires + ";path=/;httpOnly";
window.location="/welcome";
} error: funciton() {}
);
我试过将令牌放在 cookie 中(由于格式原因,Tomcat9 忽略了它)。我现在正在单独研究这个问题。
我也尝试为欢迎页面制作一个 XMLHttpRequest(),这让我恢复了原始 HTML,但我不确定是否需要使用此响应以某种方式重新加载 DOM。 ..
在响应中获取授权令牌的最佳方法是什么,并将其放入 header 以用于 /welcome 页面的后续 /GET?
您没有以正确的方式添加 headers。要添加 headers,您需要使用 beforeSend()
:
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Bearer " + JWT);
},
需要发送这个选项。另外,这里的 JWT
表示 JWT,令牌和 xhr
是 XMLHttpRequest
原始 object。此选项应发送到 $.ajax()
的参数。