Mar*_*ler 5 header http jwt thymeleaf spring-boot
我们在Spring Boot应用程序中使用JWT身份验证.为了防止CSRF攻击,我们希望使用自定义HTTP标头而不是cookie将令牌发送回服务器.
有没有办法让Thymeleaf使用XMLHttpRequest来生成生成中的链接?我们不希望通过javascript onclick处理程序替换所有th:href锚点的模板.
简短的回答:不!
长答案:老实说,这个问题是无效的。Thymeleaf 只是一个生成 HTML/XML 的库。XMLHttpRequest
也称为 AJAX (*),仅通过 javascript 使用。
此外,如果没有 JavaScript,就不可能通过表单发布发送自定义标头。因此,您需要编写一些 JavaScript 来添加自定义标头和表单。这个自定义 javascript 应该由您编写 Thymeleaf 没有自动执行它的机制。
*对于未来的评论:我知道这不准确,不要迂腐;)
您可以将令牌添加到页面,如下所示[请参阅元标记]:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.w3.org/1999/xhtml"
layout:decorator="Layout">
<head>
<title>Example</title>
<meta name="_jwt" th:content="${yourToken}"/>
</head>
...
Run Code Online (Sandbox Code Playgroud)
然后在所有 ajax 请求中,您可以读取这些元值并添加为自定义标头。
例如,如果您使用 jQuery,您可以全局配置所有 jQuery ajax 请求,如下所示:
$(function(){
var _token = $('meta[name="_jwt"]').attr('content');
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
jqXHR.setRequestHeader("your_jwt_token_header_name", _token);
});
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1853 次 |
最近记录: |