1. Config POM เพิ่ม
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2. ต่อไปก็ EnableWebSecurity
package tutorial.spring4;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.encoding.PlaintextPasswordEncoder;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Resource(name="basicUserDetailService")
private UserDetailsService userDetailsService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/hello").permitAll().anyRequest().authenticated().and()
.formLogin().loginPage("/login").failureUrl("/login?error").defaultSuccessUrl("/loginresult", true).permitAll()
.and().logout().permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(new PlaintextPasswordEncoder());
}
}
แบบนี้เป็น Config ให้ใช้ UserDetailService ที่คุ้นเคย โดยเราจะเห็นว่า Class นี้เป็น Config และบอกให้ Enable Web Security ด้วย และ extends WebSecurityConfigurerAdapter มีสองตัวหลักๆ- Method แรก สำหรับที่เรา Config Route ที่เคยเห็นๆ บน XML อันนี้ยกมาบน Class สำหรับผ่านง่ายขึ้น อธิบายคร่าวๆ
- antmatches คือตรงกับอันนี้ จะทำอะไรอ่านข้างหลัง permitAll คือเข้าได้หมด อันอื่นๆ anyRequest ต้องมี Authen พอทำเสร็จ
- ส่วนของหน้า Login ใช้ formLogin ด้วยหน้าอะไร ถ้า fail ไปไหน สามารถกำหนดได้ว่า ถ้า login ให้กลับไปหน้าเก่าที่เราเข้ามาได้ด้วยนะครับ
- Method ที่สอง หลักๆ ไว้สำหรับเรื่องว่าจะ authen แบบไหนมี่ทั้ง JDBC/LDAP/ InMemory
3. แค่นี้ก็เป็นอันเสร็จเรียบร้อยแล้วครับ
References
Basic
1. Spring Boot ตอนที่ 1 มาทำความรู้จักกับ Spring Boot
2. Spring Boot ตอนที่ 2 Hello World
3. Spring Boot ตอนที่ 3 โครงสร้างของ Project
4. Spring Boot ตอนที่ 4 Spring Boot กับ Thymeleaf
5.Spring Boot ตอนที่ 5 Spring Boot กับ Database [แบบ Embeded]
6.Spring Boot ตอนที่ 6 กับ Production Database
7.Spring Boot ตอนที่ 7 Security
8.Spring Boot ตอนที่ 8 Testing
0 comments:
แสดงความคิดเห็น