首页 > 其他分享 >Spring-Security

Spring-Security

时间:2023-04-11 16:44:46浏览次数:32  
标签:加密 Spring userMapper return userAccount new Security public

SecurityConfig


@Configuration
@EnableWebSecurity
public class SecurityConfig implements WebMvcConfigurer {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
        //
        httpSecurity.authorizeHttpRequests()
                .requestMatchers("/**").hasRole("user")
                .and()
                .formLogin()
                .and().csrf().disable();

        return httpSecurity.build();
    }

//指定密码加密器后不需要在加密后的密码前指定加密类型 exp:{bcrypt}
    @Bean
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }


//直接设置登录角色
    @Bean
    public UserDetailsService userDetailsService(){

        UserDetails userDetails = User.withDefaultPasswordEncoder()
                .username("user").password("123456").roles("user").build();

        return new InMemoryUserDetailsManager(userDetails);
    }


}

UserDetailsServiceImpl


@Service
@Slf4j
public class UserDetailsServiceImpl implements UserDetailsService {
    UserMapper userMapper;
    @Autowired
    void UserDetailsServiceImpl(UserMapper userMapper){
        this.userMapper = userMapper;
    }

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        UserAccount userAccount =  userMapper.findByUsername(username);
        if(null == userAccount) throw new UsernameNotFoundException("用户不存在");
        List<GrantedAuthority> u = AuthorityUtils.createAuthorityList("ROLE_user");
        PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        log.info("==================================================================================");
        log.info("加密后{}",passwordEncoder.encode(userAccount.getPassword()));
        log.info("加密后{}",encoder.encode(userAccount.getPassword()));
        
        
        //使用 PasswordEncoderFactories.createDelegatingPasswordEncoder(); 会在加密后的字符串前加{加密器类型}
        //如果在config中提前指定了加密类型,则不需要再加{类型},直接使用 BCryptPasswordEncoder加密 就行
        return new User(userAccount.getName(),encoder.encode(userAccount.getPassword()), u);
    }
}

标签:加密,Spring,userMapper,return,userAccount,new,Security,public
From: https://www.cnblogs.com/yinchrn/p/17306737.html

相关文章

  • spring事务传播行为
      ......
  • spring声明式事务(XML格式)
             ......
  • 【Spring MVC】简单数据绑定
    实体类:  spring-mvc.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:......
  • 自定义SpringBoot Starter
    1.Starter加载原理Springboot通过SpringBootApplication注解启动项目,springboot启动的时候,会将项目中所有声明为bean对象的实例加载到IOC容器。除此之外也会将starter里的bean信息加载到ioc容器,从而做到0配置,开箱即用。1.1加载starter:Springboot项目启动时,Springboot通过@Spri......
  • 【Spring boot】 @Value注解
    一、不通过配置文件的注入属性1.1注入普通字符串直接附在属性名上,在Bean初始化时,会赋初始值@Value("normal")privateStringnormal;1.2注入java系统变量@Value("#{systemProperties['os.name']}")privateStringsystemPropertiesName;//注入操作系统属性1.3注......
  • SpringBoot---文件上传
    静态资源访问使用IDEA创建SPringBoot项目,会默认创建出classpath:/static/目录,静态资源一般放在这个目录下即可。如果默认的静态资源过滤策略不能满足开发需求,也可以自定义静态资源过滤策略。在application.properties中直接定义过滤规则和静态资源位置:spring.mvc.stati......
  • Springboot报错:Could not resolve view with name 'index' in servlet with name 'dis
    该异常是因为用定义了带@EnableWebMvc注解的配置类后发生的,在带该注解的配置类中加入下面的代码就可以了:@BeanpublicInternalResourceViewResolverviewResolver(){InternalResourceViewResolverviewResolver=newInternalResourceViewResolver();viewResolver.......
  • SpringBoot线程池和Java线程池的实现原理
    使用默认的线程池方式一:通过@Async注解调用publicclassAsyncTest{@Asyncpublicvoidasync(Stringname)throwsInterruptedException{System.out.println("async"+name+""+Thread.currentThread().getName());Thread.sleep(10......
  • SpringBoot 集成 MybatisPlus 五——ActiveRecord
    1什么是ActiveRecordActiveRecord(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。在ActiveRecord模式中,对象中既有持久存储的数据,也有针对数据的操作,ActiveRecord模式把数据增删改查的逻辑作为对象的一......
  • SpringSecurity源码-构建ProviderManager
    简介在构建WenSecurity执行生命周期AbstractConfiguredSecurityBuilder#doBuild()方法中的init(),会执行到WebSecurityConfigurerAdapter#init(WebSecurityweb)方法,会去创建HttpSecurity。在创建HttpSecurity时调用authenticationManager()构建ProviderManager。 WebSecurityCo......