zoukankan      html  css  js  c++  java
  • Spring Security的三个configure方法

    参考自:java – HttpSecurity,WebSecurity和AuthenticationManagerBuilder

    Spring Security通过继承WebSecurityConfigurationAdapter这个类,可以选择实现该类中的三个重载的configure方法,虽然可以下载代码文档,但是稍微有点……

    看看这三个方法:

    void configure(AuthenticationManagerBuilder auth) throws Exception
    
    void configure(HttpSecurity http) throws Exception
    
    
    void configure(WebSecurity web) throws Exception

    再来看段重写的代码:

    @Configuration
    @EnableWebSecurity
    @EnableGlobalMethodSecurity(prePostEnabled = true)
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Autowired
        private CustomUserDetailsService customUserDetailsService; // 该类实现UserDetailsServer接口,重写loadUserByUsername方法,从数据库获取用户名,密码,角色
    
        @Override
            protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            auth.userDetailsService(customUserDetailsService).passwordEncoder(new PasswordEncoder() {
                @Override
                public String encode(CharSequence charSequence) {
                    return charSequence.toString();
                }
    
                @Override
                public boolean matches(CharSequence charSequence, String s) {
                    return s.equals(charSequence.toString());
                }
            });
        }
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests()
                    .anyRequest().authenticated()
                    .and()
                    .formLogin().loginPage("/login")
                    .defaultSuccessUrl("/").permitAll()
                    .and()
                    .logout().permitAll();
            http.csrf().disable();
        }
    
        @Override
        public void configure(WebSecurity web) throws Exception {
    
            web.ignoring().antMatchers("/css/**", "/js/**");
        }
    }

    configure(AuthenticationManagerBuilder)用于通过允许AuthenticationProvider容易地添加来建立认证机制。

    也就是说用来记录账号,密码,角色信息。

    下方代码不从数据库读取,直接手动赋予

    AuthenticationManagerBuilder allows 
        public void configure(AuthenticationManagerBuilder auth) {
            auth
                .inMemoryAuthentication()
                .withUser("user")
                .password("password")
                .roles("USER")
            .and()
                .withUser("admin")
                .password("password")
                .roles("ADMIN","USER");
    }

    configure(HttpSecurity)允许基于选择匹配在资源级配置基于网络的安全性。以下示例将以/ admin /开头的网址限制为具有ADMIN角色的用户,并声明任何其他网址需要成功验证。

    也就是对角色的权限——所能访问的路径做出限制

    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeUrls()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .anyRequest().authenticated()
    }

    configure(WebSecurity)用于影响全局安全性(配置资源,设置调试模式,通过实现自定义防火墙定义拒绝请求)的配置设置。

    一般用于配置全局的某些通用事物,例如静态资源等

    public void configure(WebSecurity web) throws Exception {
        web
            .ignoring()
            .antMatchers("/resources/**");
    }
  • 相关阅读:
    canvas绘图详解-10-文字渲染
    canvas绘图详解-09-曲线的绘制原理
    websocket,vue链接
    JS 数组对象根据某一相同key合并成新的数组
    nuxt $axios访问多个服务器地址请求数据
    正则去除字符串中的html标签,但不去除<br>标签
    css多行文本溢出显示省略号(兼容ie)
    input accept
    jquery.toast
    jquery toast
  • 原文地址:https://www.cnblogs.com/woyujiezhen/p/13049979.html
Copyright © 2011-2022 走看看