您好Stackoverflow团队,
我在REST调用中遇到一个问题,在尝试深入研究HTTP错误之后我一无所知。 不管怎样,授权都不起作用,尽管JWT令牌的生成和获取成功。
我在Springboot应用程序中的简要说明: (可用于分析问题) https://github.com/vivdso/SpringAuthentication
与名为UserAccounts的后端MongoDb集合对话的DbRepository调用,其中存储了包含密码(Ciphertexts)的角色和凭据详细信息。
JWT令牌生成机制,返回必须附加到后续API调用的HTTP标头的令牌。
简而言之。
" .....:8080 / AUTH"方法发布Content-Type appliction / json body:{" username":" user"," password":" sample"}响应应该是一个jwt令牌
然后
尝试认证网址.....:8080 /订单。
****预期结果:标题"授权:{$ jwtToken从步骤6}实际结果:(错误:403禁止,这应该完全认证,并应让用户访问此API。预期结果:"您好,这是我的订单" ** **
这只是一个简单的应用程序,没有太多细节需要担心。 任何帮助将不胜感激。
提前致谢。
答案 0 :(得分:0)
在您的代码中我无法找到过滤器注册。
尝试将其添加到WebSecurityConfig.java
中@Bean
public CustomAuthenticationTokenFilter authenticationTokenFilterBean() throws Exception {
CustomAuthenticationTokenFilter authenticationTokenFilter = new CustomAuthenticationTokenFilter ();
authenticationTokenFilter.setAuthenticationManager(authenticationManagerBean());
return authenticationTokenFilter;
}
然后用
注册http
.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);
在配置方法
中我知道
答案 1 :(得分:0)
这是一个角色不匹配的问题。与jwt中的角色不匹配。 更改了代码以更正角色,并且工作正常 -
public CustomDbRepository(){
List<String> roles = new ArrayList<>(1);
//roles.add("ROLE_USER");
roles.add("USER");