zoukankan      html  css  js  c++  java
  • [Spring Security] An Simple example configuration

    package com.example.ec.security;
    
    import com.example.ec.repo.RoleRepository;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.authentication.AuthenticationManager;
    import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    import org.springframework.security.config.http.SessionCreationPolicy;
    import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    import org.springframework.security.crypto.password.PasswordEncoder;
    
    @Configuration
    @EnableGlobalMethodSecurity(prePostEnabled = true)
    public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
    
        @Autowired
        RoleRepository roleRepository;
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
    
            // Entry points
            http.authorizeRequests()
                    .antMatchers("/packages/**").permitAll()
                    .antMatchers("/tours/**").permitAll()
                    .antMatchers("/ratings/**").permitAll()
                    .antMatchers("/users/signin").permitAll()
                    // Disallow everything else..
                    .anyRequest().authenticated();
    
            // Disable CSRF (cross site request forgery)
            http.csrf().disable();
    
            // No session will be created or used by spring security
            http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    
        }
    
        @Bean
        @Override
        public AuthenticationManager authenticationManagerBean() throws Exception {
            return super.authenticationManagerBean();
        }
    
        @Bean
        public PasswordEncoder passwordEncoder() {
            return new BCryptPasswordEncoder(12);
        }
    
    }
    @Component
    public class ExploreCaliUserDetailsService implements UserDetailsService {
        @Autowired
        private UserRepository userRepository;
    
        @Override
        public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
            User user = userRepository.findByUsername(s).orElseThrow(() ->
                    new UsernameNotFoundException(String.format("User with name %s does not exist", s)));
    
            //org.springframework.security.core.userdetails.User.withUsername() builder
            return withUsername(user.getUsername())
                    .password(user.getPassword())
                    .authorities(user.getRoles())
                    .accountExpired(false)
                    .accountLocked(false)
                    .credentialsExpired(false)
                    .disabled(false)
                    .build();
        }
    }
  • 相关阅读:
    js单体模式
    react实现递归搜索下拉查询目录树功能
    浏览器跨域问题分析
    css中清除浮动
    ts中的函数
    ts中类型
    RX.js6变化
    js对象模型3
    React数组变化之后,视图没有更新
    Mac安装yarn并配置环境变量PATH,运行报错问题解决
  • 原文地址:https://www.cnblogs.com/Answer1215/p/14191366.html
Copyright © 2011-2022 走看看