javascript - JWT Token 不以 Bearer String 开头,并且在发送时以 Bearer 开头的公理
问题描述
我正在尝试发送一个发布请求,该请求在标头中发送令牌并作为字符串发送。问题是在后端验证标头给了我错误JWT Token does not begin with Bearer String
。
下面是相关代码。
前端
getUser() {
if (token != null) {
const config = {
headers: { Authorization: `Bearer ${token}` }
};
const formData = new FormData();
formData.set("token", token);
axios.post("http://localhost:8080/user/token", formData,config)
.then((function (response) {
if (response.data.email !== null) {
sessionStorage.setItem("role", response.data.role);
sessionStorage.setItem("userId", response.data.id);
sessionStorage.setItem("name", response.data.name);
location.reload(true)
document.getElementById('loginResult').innerHTML = response.data.token;
}
}));
}
}
后端
protected void configure(HttpSecurity httpSecurity) throws Exception {
// We don't need CSRF for this example
httpSecurity
.csrf().disable()
// dont authenticate this particular request
.authorizeRequests()
.antMatchers("/authenticate").permitAll()
.antMatchers("/events").permitAll()
.antMatchers("/events/**").hasAnyAuthority("ADMIN","VENDOR")
.antMatchers("/event-photos/**").permitAll()
.antMatchers("/user/**").hasAnyAuthority("ADMIN","VENDOR")
.anyRequest().authenticated()
.and()
// make sure we use stateless session; session won't be used to
// store user's state.
.exceptionHandling()
.authenticationEntryPoint(jwtAuthenticationEntryPoint)
.and().sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
// Add a filter to validate the tokens with every request
httpSecurity.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);
}
@PostMapping("user/token")
public @ResponseBody User getUser(@RequestParam("token") String token){
String email=jwtTokenUtil.getUsernameFromToken(token);
User user=userRepository.getUserByUsername(email);
return user ;
}
解决方案
如果要Bearer
在正文中的标记前面添加,可以添加:
formData.set("token", `Bearer ${token}`);
推荐阅读
- flutter - FocusScope.of(context).requestFocus(myFocusNode) vs myFocusNode.requestFocus();
- kubernetes - 删除命名空间并删除 helm 部署?
- javascript - 回答: SyntaxError: JSON.parse: expected ':' 但它位于对象的末尾
- javascript - 无法使用 .length 属性循环数组/函数
- firebase - 来自已部署的 Firebase 功能的 403
- javascript - 从 angular 5 升级到 angular 8,SystemJS 出现问题
- google-cloud-platform - BigQuery Storage API:表的存储格式不受支持
- javascript - 使用 JavaScript,如何根据这些参数/规则生成一个 randm 11 字符字符串?(L,L,L,L/N,L/N,N,N,N,N,N,N)
- xamarin - 从登录页面导航时如何在设置页面中禁用或隐藏按钮
- python - 尝试在 Django 中保存模型表单时,为什么会出现“外键不匹配”?