2017-02-20 35 views
1

喜队#1,JAVA春自定义身份验证使用MongoDB的用于提取存储的用户凭据

我面对我的REST调用一个问题,对此我毫无头绪试图挖掘到HTTP错误后。 尽管JWT令牌的生成和获取成功,但某种程度上授权不起作用。

简要说明什么,我有我的Springboot应用: (仅适用于对问题的分析) https://github.com/vivdso/SpringAuthentication

  1. 一个DbRepository通话,讨论到后端的MongoDB集合命名UserAccounts其中包含存储的角色和凭证详细信息,包括密码(密文)。

  2. 一个JWT令牌生成机制,它返回一个令牌,该令牌必须附加到HTTP Headers以用于后续API调用。

简而言之流程。

“.....:8080/auth”method post Content-Type appliction/json body:{“username”:“user”,“password”:“sample”}响应应该是一个jwt令牌

然后

尝试通过身份验证的网址.....:8080/order。

****预期结果:标题“授权:来自步骤6的{$ jwtToken}实际结果::(错误:403禁止,应该完全验证并且应该允许用户访问此API。”预期结果:“你好这里是我的订单“****

这仅仅是一个简单的应用没有太多细节操心。 任何帮助将事先所理解的。

感谢。

回答

0

您代码我找不到过滤器注册。

尝试与

http 
     .addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class); 

它添加在WebSecurityConfig.java

@Bean 
public CustomAuthenticationTokenFilter authenticationTokenFilterBean() throws Exception { 
    CustomAuthenticationTokenFilter authenticationTokenFilter = new CustomAuthenticationTokenFilter(); 
    authenticationTokenFilter.setAuthenticationManager(authenticationManagerBean()); 
    return authenticationTokenFilter; 
} 

,然后注册它的配置方法内

等我知道

+0

嗨里克,感谢您的帮助, – Suryadeep

+0

我提出建议的代码更改,但我收到以下 – Suryadeep

+0

{ “时间戳”:1487594450789, “状态“:403, ”错误“:”禁止“, ”消息“:”访问被拒绝“, ”路径“:”/订单“ } – Suryadeep

0

这是一个角色不匹配问题。与jwt中的角色不匹配。 改变了代码来纠正的作用,它工作得很好 -

public CustomDbRepository(){ 

    List<String> roles = new ArrayList<>(1); 
    //roles.add("ROLE_USER"); 
    roles.add("USER"); 
+0

Gulzar,谢谢。这工作。 – Suryadeep

相关问题