Java RESTAPI授权与Spring安全性

Java RESTAPI授权与Spring安全性,java,spring-boot,spring-security,Java,Spring Boot,Spring Security,我正试图使用@PreAuthorize(“hasAnyRole('ADMIN')”)保护我的API。为此,我实现了一个UserDetailsService来从数据库获取数据。如果您试图访问任何受保护的API,它会显示一个默认的登录表单 我遵循的代码是 我的项目正在成功运行。但当我试图在浏览器中访问我的安全API时,它不会显示登录表单 另外,我希望能够访问RESTAPI,无论是否使用授权头 本文件 使用InMemoryAuthentication,还可以使用浏览器和邮递员访问API。同时,我正在

我正试图使用
@PreAuthorize(“hasAnyRole('ADMIN')”)
保护我的API。为此,我实现了一个
UserDetailsService
来从数据库获取数据。如果您试图访问任何受保护的API,它会显示一个默认的登录表单

我遵循的代码是

我的项目正在成功运行。但当我试图在浏览器中访问我的安全API时,它不会显示登录表单

另外,我希望能够访问RESTAPI,无论是否使用授权头

本文件


使用
InMemoryAuthentication
,还可以使用浏览器和邮递员访问API。同时,我正在从我的数据库中获取数据。如何以这种方式自定义我的实现,使其既适用于浏览器又适用于邮递员?

下面的代码需要一个表单,用于匹配通配符的任何内容。antMatcher中需要开头的斜杠

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .csrf().disable()
                    .authorizeRequests()
                    .antMatchers("/**/secured/**")
                    .authenticated()
                    .and()
                    .httpBasic();
        }

下面的代码需要一个表单来表示与通配符匹配的任何内容。antMatcher中需要开头的斜杠

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .csrf().disable()
                    .authorizeRequests()
                    .antMatchers("/**/secured/**")
                    .authenticated()
                    .and()
                    .httpBasic();
        }

我正在关注我提到的教程的链接。我已经照原样做了。一切正常,即使我的安全api没有登录也无法访问。唯一的错误是它没有显示登录表单。我正在关注我提到的链接的教程。我已经照原样做了。一切正常,即使我的安全api没有登录也无法访问。唯一的错误是它没有显示登录表单。对不起,不,csrf是单独的。您可以保留我将编辑我的回答仍然会给我相同的错误“访问被拒绝”:(anyrequest.permitall()如果您愿意,也可以保留,它将显式允许与antMatcher不匹配的其他路由,并且更清晰。如果没有它,其他请求将隐式允许,因为我只指定了那些应该安全的路由。因此两者都可以工作HttpSecurity安全链现在应该是正确的,因为我在本地有一个工作示例。我没有hink您的问题现在在CustomUserDetails服务中。请尝试添加其他日志记录,或使用调试器检查optionalUsers是否为空或GetAuthority是否返回空集合Orry否,csrf是单独的,您可以保留,我将编辑我的回答仍然会给我相同的错误“访问被拒绝”:(anyrequest.permitall()如果您愿意,也可以保留,它将显式允许与antMatcher不匹配的其他路由,并且更清晰。如果没有它,其他请求将隐式允许,因为我只指定了那些应该安全的路由。因此两者都可以工作HttpSecurity安全链现在应该是正确的,因为我在本地有一个工作示例。我没有hink您的问题现在在CustomUserDetails服务中。请尝试添加其他日志记录或使用调试器检查optionalUsers是否为空或GetAuthority是否返回空集合