为了账号安全,请及时绑定邮箱和手机立即绑定

由于授权而无法访问API

由于授权而无法访问API

繁星点点滴滴 2021-03-30 16:13:23
我创建了自己的api,以便在请求时向UI提供数据。但是我正在使用JHipster,它实现了Spring Security来验证api请求。当我登录到应用程序并使用url(localhost:9090 / api / lesson)直接访问api时,它为我的用户角色和管理员角色提供了401。{  "type" : "https://www.jhipster.tech/problem/problem-with-message",  "title" : "Unauthorized",  "status" : 401,  "detail" : "Full authentication is required to access this resource",  "path" : "/api/lesson",  "message" : "error.http.401"}我检查了安全性配置,并且/ api / **路径已设置为Authenticated,这使我感到困惑,为什么登录后无法访问该资源。protected void configure(HttpSecurity http) throws Exception {    http        .addFilterBefore(corsFilter, UsernamePasswordAuthenticationFilter.class)        .exceptionHandling()        .authenticationEntryPoint(problemSupport)        .accessDeniedHandler(problemSupport)    .and()        .csrf()        .disable()        .headers()        .frameOptions()        .disable()    .and()        .sessionManagement()        .sessionCreationPolicy(SessionCreationPolicy.STATELESS)    .and()        .authorizeRequests()        .antMatchers("api/lesson").permitAll()        .antMatchers("/api/register").permitAll()        .antMatchers("/api/activate").permitAll()        .antMatchers("/api/authenticate").permitAll()        .antMatchers("/api/account/reset-password/init").permitAll()        .antMatchers("/api/account/reset-password/finish").permitAll()        .antMatchers("/api/profile-info").permitAll()        .antMatchers("/api/**").authenticated()        .antMatchers("/management/health").permitAll()        .antMatchers("/management/**").hasAuthority(AuthoritiesConstants.ADMIN)        .antMatchers("/v2/api-docs/**").permitAll()        .antMatchers("/swagger-resources/configuration/ui").permitAll()        .antMatchers("/swagger-ui/index.html").hasAuthority(AuthoritiesConstants.ADMIN)    .and()        .apply(securityConfigurerAdapter());}尽管我的API并非像JHipsters那样创建,就像使用CrudRepository代替JPA一样,但我认为这不会成为问题。但是,我可能是错的。
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

为什么不使用如下所示:


http

                .cors()

                .and()

                .csrf()

                .disable()

                .exceptionHandling()

                .authenticationEntryPoint(unauthorizedHandler)

                .and()

                .sessionManagement()

                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)

                .and()

                .authorizeRequests()

                .antMatchers("/")

                .permitAll()

                .antMatchers("/api/auth/**","/api/user/exist")

                .permitAll()

                .antMatchers("/api/user/checkUsernameAvailability", "/api/user/checkEmailAvailability")

                .permitAll()

                .antMatchers(HttpMethod.GET, "/api/polls/**", "/api/users/**", "/api/gift/**")

                .permitAll()

                .anyRequest()

                .authenticated();


查看完整回答
反对 回复 2021-04-14
  • 1 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信