μ€νλ§ μνλ¦¬ν° λ°μ΄ν° JDBC
μ 체 μμ μ½λλ kdevkr/spring-boot-securityμμ νμΈν μ μλ€.
Spring Data Integrationλ₯Ό μ°Έκ³ νλ©΄ μ€νλ§ μν리ν°μ μ€νλ§ λ°μ΄ν° λͺ¨λμ ν΅ν©ν μ μλ€.
μ°μ μλμ κ°μ΄ ν΄λμ€ν¨μ€μ org.springframework.security:spring-security-data
μμ‘΄μ±μ μΆκ°νλλ‘ νμ.
build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.security:spring-security-data' }
@Bean
public SecurityEvaluationContextExtension securityEvaluationContextExtension() {
return new SecurityEvaluationContextExtension();
}
κ΅¬μ± ν΄λμ€μμ SecurityEvaluationContextExtensionλ₯Ό λΉμΌλ‘ λ±λ‘νλ©΄ @PreAuthorizeμ κ°μ λ©μλ κΈ°λ° ννμκ³Ό λΉμ·νκ² @Query λ΄μμ μ€νλ§ μν리ν°μ λν SpELμ μ¬μ©ν μ μλ€. νμ§λ§, μ€νλ§ μνλ¦¬ν° κ³΅μ λ¬Έμμ Spring Dataμ λν μμ μ½λμ κ°μ΄ μλν΄λ³΄λ©΄ μλμ κ°μ μ€λ₯
κ° λ°μνλ€.
org.springframework.dao.InvalidDataAccessApiUsageException: SQL [SELECT u.username FROM users u where u.username = ?__$synthetic$__1]: given 1 parameters but expected 0
μμ κ°μ μ€λ₯κ° λ°μνλ μ΄μ λ Spring Data JDBCλ λ΄λΆμ μΌλ‘ NamedParameterJdbcTemplate**λ₯Ό μ¬μ©νκΈ° λλ¬Έμ ?
μ κ°μ JPQL λλ Native 쿼리 λ°©μκ³Όλ μ°¨μ΄κ° μμΌλ―λ‘ ?
μ΄ μλ :
λ‘ ννν΄μΌνλ€.
@Repository
public interface UserRepository extends CrudRepository<User, String> {
@Query("SELECT u.username FROM users u where u.username = :#{ principal?.username }")
String getUsername();
}