当前位置: 首页 > 知识库问答 >
问题:

GET请求的许可请求

曹渝
2023-03-14

我有一个具有OAuth2授权的Spring Cloud应用程序:

@RestController
@RequestMapping("/product")
public class ProductController {

    @GetMapping("/categories")
    public ResponseEntity<Map<Integer, CategoryFullDTO>> getCategoriesList() {

        .......
    }
}

我添加了这个安全配置:

@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class OAuth2ResourceServerConfig extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(final HttpSecurity http) throws Exception
    {
        http.authorizeRequests()
                .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
                .antMatchers(HttpMethod.POST, "/oauth/token").permitAll()
                .antMatchers(HttpMethod.GET, "/product/categories").permitAll()
                
                .anyRequest().authenticated()
                .and()
                .httpBasic().disable()
                .formLogin()
                .and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and().exceptionHandling().authenticationEntryPoint(authenticationEntryPoint)
                .and().csrf().disable();
    }
}


@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter implements WebMvcConfigurer {

    @Override
    protected void configure(HttpSecurity http) throws Exception
    {
        http.authorizeRequests()
                .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
                .antMatchers(HttpMethod.POST, "/oauth/token").permitAll()
                .antMatchers(HttpMethod.GET, "/product/categories").permitAll()

                .anyRequest().authenticated()
                .and()
                .httpBasic().disable()
                .formLogin()
                .and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and().exceptionHandling().authenticationEntryPoint(authenticationEntryPoint)
                .and().csrf().disable();

//        http.requiresChannel()
//                .anyRequest().requiresInsecure();
    }
}

github:https://github.com/rcbandit111/OAuth2/blob/master/src/main/java/org/engine/security/WebSecurityConfig.java

打开Angular应用程序时,出现访问错误:加载资源失败:服务器以401()状态响应/product/categories

您知道我需要应用什么配置才能在没有强制授权的情况下公开此路径吗?

当我用邮递员发出请求时,它正在工作。它确实会在未经授权的情况下返回数据。但是,如果您的auth_令牌仍然存在,并且已经过期,那么我的授权拦截器似乎仍然捕获它,并将其应用于导致错误的请求。看起来JWT令牌验证逻辑返回了错误。我怎样才能解决这个问题?

共有1个答案

窦志新
2023-03-14

如果Angular应用程序使用了一个拦截器,该拦截器会向头中注入令牌,那么可以使用HttpBackend来防止通过拦截器链:

https://angular.io/api/common/http/HttpBackend

 类似资料:
  • 向传递的 URL 发出一个 GET 请求。 使用 XMLHttpRequest web API 向给定的 url 发出 get 请求。 通过调用给定的 callback 和 responseText 来处理 onload 事件。 通过运行提供的 err 函数,处理onerror事件。 省略第四个参数 err ,默认将错误记录到控制台的 error 流。 const httpGet = (url,

  • 问题内容: 将请求正文与GET请求一起传递是否违反REST风格? 例如在Elasticsearch中过滤一些信息 甚至设计了一些工具来避免GET请求中的请求主体(例如邮递员) 问题答案: 从RFC: GET请求消息中的有效负载没有定义的语义。在GET请求上发送有效内容正文可能会导致某些现有实现拒绝该请求。 换句话说,这不是禁止的,但是它是未定义的行为,应避免使用。HTTP客户端,服务器和代理可以随

  • 主要内容:获取GET请求内容,实例,实例,获取 POST 请求内容,基本语法结构说明,实例在很多场景中,我们的服务器都需要跟用户的浏览器打交道,如表单提交。 表单提交到服务器一般都使用 GET/POST 请求。 本章节我们将为大家介绍 Node.js GET/POST请求。 获取GET请求内容 由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数。 node.js 中 url 模块中的 parse 函数提供了这个

  • 在很多场景中,我们的服务器都需要跟用户的浏览器打交道,如表单提交。 表单提交到服务器一般都使用 GET/POST 请求。 本章节我们将为大家介绍 Node.js GET/POS T请求。 获取GET请求内容 由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数。 node.js 中 url 模块中的 parse 函数提供了这

  • 请求方式: "|3|1|url|\r" 参数: url 设置Get请求的url链接 返回值: "|3|code|data|\r" 参数: code http请求返回的成功或者错误码, 成功:code = 200 获取数据失败:code = -1 http请求字段错误:code = 1 data http请求返回的数据 Arduino样例: softSerial.print("|3|1|http:/

  • 问题内容: 我需要在JavaScript中执行HTTPGET请求。最好的方法是什么? 我需要在Mac OS X破折号小部件中执行此操作。 问题答案: 浏览器(和Dashcode)提供XMLHttpRequest对象,该对象可用于从JavaScript发出HTTP请求: 但是,不鼓励同步请求,并且将按照以下方式生成警告: 注意:从Gecko 30.0(Firefox 30.0 / Thunderbi