電子商務Java微服務 SpringBoot整合SpringSecurity

gung123發表於2020-03-11

一 初體驗有spring cloud b2b2c電子商務需求的朋友可以加企鵝求求:一零三八七七四六二六 

1.導包

<dependency>

   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2.測試

@RestController

public class HelloController
{
   @GetMapping("/hello")
   public String hello() {
       return "Hello";
   }
}

訪問 會自動跳到login頁面
預設使用者名稱 user
預設密碼在控制檯顯示

二 在配置檔案或程式碼中配置security需要的使用者名稱和密碼

第一種: 在配置檔案中配置

spring.security.user.name=user

spring.security.user.password=123
spring.security.user.roles=admin

第二種:在程式碼中配置

新建一個SecurityConfig .java類

@Configuration

public class SecurityConfig extends WebSecurityConfigurerAdapter
{
   //去掉spring5一定要密碼加密的限制
   @Bean
   PasswordEncoder passwordEncoder(){
       return NoOpPasswordEncoder.getInstance();
   }
   //第二種: 在程式碼中配置使用者名稱和密碼
   @Override
   protected void configure(AuthenticationManagerBuilder auth) throws Exception
   {
       auth.inMemoryAuthentication()
               .withUser("terry").password("123").roles("admin")
               .and()
               .withUser("tt").password("456").roles("user");
   }
}

三 配置HttpSecurity

1.接著上面的配置檔案寫

@Configuration

public class SecurityConfig extends WebSecurityConfigurerAdapter
{
   //去掉spring5一定要密碼加密的限制
   @Bean
   PasswordEncoder passwordEncoder(){
       return NoOpPasswordEncoder.getInstance();
   }
   //第二種: 在程式碼中配置使用者名稱和密碼
   @Override
   protected void configure(AuthenticationManagerBuilder auth) throws Exception
   {
       auth.inMemoryAuthentication()
               .withUser("terry").password("123").roles("admin")
               .and()
               .withUser("tt").password("456").roles("user");
   }

   //HttpSecurity配置
   @Override
   protected void configure(HttpSecurity http) throws Exception
   {
       http.authorizeRequests()
               .antMatchers("/admin/**").hasRole("admin")
               .antMatchers("/user/**").hasAnyRole("admin","user")
               //.antMatchers("/user/**").access("hasAnyRole('user','admin')")
               .anyRequest().authenticated()
               .and()
               .formLogin()
               .loginProcessingUrl("/doLogin")
               .permitAll()
               .and()
               .csrf().disable();//要使用postman,防止被認為是csrf攻擊
   }
}

2.測試

@RequestMapping("/admin/hello")

public String admin(){
   return "Hello admin";
}

@RequestMapping("/user/hello")
public String user(){
   return "hello user";
}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952307/viewspace-2679614/,如需轉載,請註明出處,否則將追究法律責任。

相關文章