1

嗨 Stackoverflow 团队,

我在我的 REST 调用中遇到了一个问题,在尝试深入研究 HTTP 错误后我对此一无所知。即使 JWT 令牌的生成和获取成功,授权也无法正常工作。

我在 Springboot 应用程序中的简短描述:( 可用于分析问题) https://github.com/vivdso/SpringAuthentication

  1. 与名为 UserAccounts 的后端 MongoDb 集合对话的 DbRepository 调用,其中存储了角色和凭据详细信息,包括密码(密文)。

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

简而言之就是流量。

".....:8080/auth" 方法 post Content-Type application/json body:{"username":"user","password":"sample"} 响应应该是一个 jwt 令牌

接着

尝试经过身份验证的 url .....:8080/order。

****预期结果:标题“授权:{$jwtToken from step 6}实际结果::(错误:403禁止,这应该是完全认证的,应该让用户访问这个api。预期结果:“你好,这是我的命令”****

这只是一个简单的应用程序,无需担心太多细节。任何帮助将不胜感激。

提前致谢。

4

2 回答 2

1

在您的代码中,我找不到过滤器注册。

尝试将其添加到 WebSecurityConfig.java

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

然后注册它

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

里面的配置方法

让我知道

于 2017-02-20T10:33:17.220 回答
0

这是一个角色不匹配的问题。与 jwt 中的角色不匹配。更改了代码以更正角色并且效果很好 -

public CustomDbRepository(){

    List<String> roles = new ArrayList<>(1);
    //roles.add("ROLE_USER");
    roles.add("USER");
于 2017-02-21T18:30:35.203 回答