JAVA春自定义身份验证使用MongoDB的用于提取存储的用户凭据
喜队#1,JAVA春自定义身份验证使用MongoDB的用于提取存储的用户凭据
我面对我的REST调用一个问题,对此我毫无头绪试图挖掘到HTTP错误后。 尽管JWT令牌的生成和获取成功,但某种程度上授权不起作用。
简要说明什么,我有我的Springboot应用: (仅适用于对问题的分析) https://github.com/vivdso/SpringAuthentication
一个DbRepository通话,讨论到后端的MongoDB集合命名UserAccounts其中包含存储的角色和凭证详细信息,包括密码(密文)。
一个JWT令牌生成机制,它返回一个令牌,该令牌必须附加到HTTP Headers以用于后续API调用。
简而言之流程。
“.....:8080/auth”method post Content-Type appliction/json body:{“username”:“user”,“password”:“sample”}响应应该是一个jwt令牌
然后
尝试通过身份验证的网址.....:8080/order。
****预期结果:标题“授权:来自步骤6的{$ jwtToken}实际结果::(错误:403禁止,应该完全验证并且应该允许用户访问此API。”预期结果:“你好这里是我的订单“****
这仅仅是一个简单的应用没有太多细节操心。 任何帮助将事先所理解的。
感谢。
您代码我找不到过滤器注册。
尝试与
http
.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);
它添加在WebSecurityConfig.java
@Bean
public CustomAuthenticationTokenFilter authenticationTokenFilterBean() throws Exception {
CustomAuthenticationTokenFilter authenticationTokenFilter = new CustomAuthenticationTokenFilter();
authenticationTokenFilter.setAuthenticationManager(authenticationManagerBean());
return authenticationTokenFilter;
}
,然后注册它的配置方法内
等我知道
这是一个角色不匹配问题。与jwt中的角色不匹配。 改变了代码来纠正的作用,它工作得很好 -
public CustomDbRepository(){
List<String> roles = new ArrayList<>(1);
//roles.add("ROLE_USER");
roles.add("USER");
Gulzar,谢谢。这工作。 – Suryadeep
嗨里克,感谢您的帮助, – Suryadeep
我提出建议的代码更改,但我收到以下 – Suryadeep
{ “时间戳”:1487594450789, “状态“:403, ”错误“:”禁止“, ”消息“:”访问被拒绝“, ”路径“:”/订单“ } – Suryadeep