我有一个 JWT Auth 的基本演示,在其中我可以注册、登录(生成令牌)并进行正确身份验证,但是一旦我在邮递员中添加令牌,我只能获得“正常”状态,但无法从我的帐户中获取任何数据控制器
`@GetMapping
public ResponseEntity<String> getHome(){
return ResponseEntity.ok("Hello world");
//return userService.getUsers();
}`
如果我从路径中删除身份验证并添加 .permitAll(),它确实有效:
`http.csrf(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(rq -> {
rq.requestMatchers("/api/user/**").permitAll();
rq.requestMatchers("/home/**").permitAll();
rq.anyRequest().authenticated();
});`
谢谢!
我尝试添加“rq.requestMatchers("/home/**").permitAll();”,并且restcontroller确实可以工作,但只是没有身份验证!
首先,您可以检查在授权选项卡下的 postmant 中选择了什么类型的令牌,也许它可以与 OAuth 2.0 等其他类型一起使用。
其次,确保您的应用程序中有一个像 JwtRequestFilter 这样的过滤器来拦截传入请求、提取 JWT 令牌并基于该令牌设置 Spring Security 的身份验证上下文。如果您不确定,请在您的拦截器中放置制动点并检查安全性是否识别该令牌
您还可以尝试添加通配符“/”并检查它是否可以在没有特定游行者的情况下工作:
http
.csrf(AbstractHttpConfigurer::disable)
.authorizeRequests(authorize -> authorize
.antMatchers("/**").permitAll() // Allow all requests
.anyRequest().authenticated()
);