好的,我正在学习春季安全性,并且遇到了一些私有代码,这些私有代码配置如下。
httpSecurity.authorizeRequests().anyRequest().permitAll();

现在,我看到了httpsecurity方法的javadocs,并遇到了httpBasic()

httpSecurity.httpBasic();

这两条线的输出相同。因此,有人可以帮助我了解其中的区别吗?

最佳答案

authorizeRequest()

authorizeRequest()用于使用RequestMatcher实现(即通过URL模式)基于HttpServletRequest限制访问。

配置示例:

最基本的示例是将所有URL配置为要求角色“ ROLE_USER”。以下配置要求对每个URL进行身份验证,并将授予用户“ admin”和“ user”的访问权限。

protected void configure(HttpSecurity http) throws Exception {
                http
                        .authorizeRequests(authorizeRequests ->
                                authorizeRequests
                                        .antMatchers("/**").hasRole("USER")
                        )
                        .formLogin(withDefaults());
        }


httpBasic()

配置HTTP基本身份验证。 HTTP Basic身份验证实现是对Web资源实施访问控制的最简单技术,因为它不需要Cookie,会话标识符或登录页面。默认领域是“ Spring Security Application”。

示例配置

下面的示例演示如何为应用程序配置HTTP Basic身份验证。

@Configuration
 @EnableWebSecurity
 public class HttpBasicSecurityConfig extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(HttpSecurity http) throws Exception {
                http.authorizeRequests().antMatchers("/**").hasRole("USER").and().httpBasic();
        }

        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
                auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
        }
 }

10-08 10:51