javascript - 如何使用 JavaScript(html 脚本)将 JWT-TOKEN 传递给 localStorage?
问题描述
我正在Rest
MVC
为在线咖啡和茶店编写应用程序。使用了以下技术:Spring-Boot
, Hibernate
, PostgreSQL
, Gradle
, Thymeleaf
, HTML
, CSS
. 我已经准备好整个后端,还需要做一个前端。目前我正在制作授权页面。页面本身已准备好HTML
和CSS
,现在您需要自己制作授权逻辑。为此,我需要编写一个脚本,javascript
以便将 myjwt token
存储在localStorage
. 关键是我不知道如何实现这一点,如何使用in传递我token
的标题。javascripte
localStorage
重要提示:javascript
必须干净,不使用框架(angular
,node
...)。我该怎么做?
PS 再一次,整个背面都准备好了。Rest
-授权方法有效(也就是说,我输入我的login
-password
我得到一个jwt token
)。
Java - 授权方法
public ResponseEntity<Map<String, String>> authorization(@RequestBody AuthenticationRequestDTO requestDto) {
try {
String login = requestDto.getLogin();
authenticationManager
.authenticate(new UsernamePasswordAuthenticationToken(login, requestDto.getPassword()));
User user = userRepository.getByLogin(login);
if (user == null) {
throw new AuthenticationServiceException("ddwd");
}
String token = jwtTokenProvider.createToken(login, user.getRole());
Map<String, String> response = new HashMap<>();
response.put("login", login);
response.put("token", token);
return ResponseEntity.ok(response);
} catch (AuthenticationServiceException e) {
log.error("Error: ", e);
throw new AuthenticationServiceException("Invalid login");
}
}
解决方案
您可以在 localstorage 中添加 JWT 令牌,并通过 API 调用检索/读取和传递值。下面是从本地存储中设置和读取值的示例。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script type="text/javascript">
function createLocalstorageItem(txtJwtTokenValue) {
sessionStorage.setItem("jwtToken", txtJwtTokenValue);
}
function readValue() {
var jwtToken = sessionStorage.getItem("jwtToken");
console.log("jwtToken : "+jwtToken );
return jwtToken ;
}
function getDataFromAPiByPassingJwtTokenInHeader(){
var jwtToken=readValue();
$.ajax({
url: 'https://url.com',
type: 'post',
data: {},
headers: {
Bearer Token: "Bearer "+jwtToken, //key word **Bearer** should pass before the token string
},
dataType: 'json',
success: function (data) {
console.info(data);
}
});
}
</script>
请尝试这种方式。
推荐阅读
- php - 如何通过类连接redis
- azure - 多个 Azure 节点正在访问 Azure Blob 存储文件
- mysql - MyISAM 到 InnoDB 的转换失败,但我的磁盘空间增加了
- html - 在当前背景下创建网格
- php - 我可以用 PHP 中的推送值/散列数据重新构造一个数组吗
- vba - 在不打开图表工作簿或使其不可见的情况下更新 PowerPoint 图表
- java - 带有子查询的 Sqlite 查询返回空
- runtime-error - 保存工作簿“正在使用的进程”后,ClosedXML 无法删除文件
- sorting - 在使用分页的 cakephp 3 中查找后如何对包括格式化的结果进行排序?
- wso2-am - 如何使用 http 强制 wso2 api manager keymanager 组件?