Skip to content

Commit ddb23b5

Browse files
authored
Merge pull request #60 from leesj000603/main
fix : Spring security 권한정보 인증이 안되는 error로 인한 구현방식 수정
2 parents 58ddf2a + 6d57516 commit ddb23b5

File tree

4 files changed

+67
-14
lines changed

4 files changed

+67
-14
lines changed

src/main/java/com/woorifisa/backend/common/entity/Member.java

+1-6
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import org.springframework.security.crypto.password.PasswordEncoder;
77

8+
import jakarta.persistence.Column;
89
import jakarta.persistence.Entity;
910
import jakarta.persistence.Id;
1011
import jakarta.persistence.Table;
@@ -48,10 +49,4 @@ public class Member {
4849
public boolean checkPassword(String plainPassword, PasswordEncoder passwordEncoder) {
4950
return passwordEncoder.matches(plainPassword, this.memPw);
5051
}
51-
52-
public ArrayList<Integer> getMemTypeList() {
53-
ArrayList<Integer> memTypeList = new ArrayList<>();
54-
memTypeList.add(memType);
55-
return memTypeList;
56-
}
5752
}

src/main/java/com/woorifisa/backend/common/security/springsecurity/MemberDetail.java

+17-6
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
import java.util.ArrayList;
44
import java.util.Collection;
5+
import java.util.List;
56

67
import org.springframework.security.core.GrantedAuthority;
8+
import org.springframework.security.core.authority.SimpleGrantedAuthority;
79
import org.springframework.security.core.userdetails.UserDetails;
810
import com.woorifisa.backend.common.entity.Member;
911

@@ -17,14 +19,23 @@ public MemberDetail(Member member) {
1719
this.member = member;
1820
}
1921

22+
23+
2024
@Override
2125
public Collection<? extends GrantedAuthority> getAuthorities() {
22-
ArrayList<GrantedAuthority> auths = new ArrayList<>();
23-
for (int role : member.getMemTypeList()) { // member.getMemTypeList()가 List<Integer>를 반환한다고 가정
24-
auths.add((GrantedAuthority) () -> String.valueOf(role) // int 값을 String으로 변환
25-
);
26-
}
27-
return auths;
26+
List<GrantedAuthority> authorities = new ArrayList<>();
27+
28+
// memType에 따라 역할을 다르게 설정
29+
if (member.getMemType() == 1) {
30+
authorities.add(new SimpleGrantedAuthority("1"));
31+
} else if (member.getMemType() == 2) {
32+
authorities.add(new SimpleGrantedAuthority("2"));
33+
} else if (member.getMemType() == 9) {
34+
authorities.add(new SimpleGrantedAuthority("9"));
35+
}
36+
// 추가적인 memType에 대한 조건 처리
37+
38+
return authorities;
2839
}
2940

3041
@Override

src/main/java/com/woorifisa/backend/common/security/springsecurity/SecurityConfig.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
112112
http
113113
.authorizeHttpRequests(requests -> requests
114114
.requestMatchers(AUTHENTICATED_URLS).authenticated()
115-
.requestMatchers("/admin/**").hasRole("9")
116-
.requestMatchers("/products/**").hasAnyRole("2","9")
115+
.requestMatchers("/admin/**").hasAuthority("9")
116+
.requestMatchers("/products/**", "/productAllBiz/**").hasAnyAuthority("2","9")
117117
.requestMatchers(SWAGGER_URLS).permitAll()
118118
.anyRequest().permitAll()
119119
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.woorifisa.backend.common.util;
2+
3+
import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy;
4+
import org.hibernate.boot.model.naming.Identifier;
5+
import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
6+
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
7+
8+
9+
public class CustomPhysicalNamingStrategy implements PhysicalNamingStrategy {
10+
private static final CamelCaseToUnderscoresNamingStrategy strategy = new CamelCaseToUnderscoresNamingStrategy();
11+
12+
@Override
13+
public Identifier toPhysicalCatalogName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
14+
return strategy.toPhysicalCatalogName(identifier, jdbcEnvironment);
15+
}
16+
17+
@Override
18+
public Identifier toPhysicalSchemaName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
19+
return strategy.toPhysicalSchemaName(identifier, jdbcEnvironment);
20+
}
21+
22+
@Override
23+
public Identifier toPhysicalTableName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
24+
return strategy.toPhysicalTableName(identifier, jdbcEnvironment);
25+
}
26+
27+
@Override
28+
public Identifier toPhysicalSequenceName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
29+
return strategy.toPhysicalSequenceName(identifier, jdbcEnvironment);
30+
}
31+
32+
@Override
33+
public Identifier toPhysicalColumnName(Identifier logicalName, JdbcEnvironment jdbcEnvironment) {
34+
// TODO Auto-generated method stub
35+
throw new UnsupportedOperationException("Unimplemented method 'toPhysicalColumnName'");
36+
}
37+
38+
// @Override
39+
// public Identifier toPhysicalColumnName(Identifier logicalName, JdbcEnvironment jdbcEnvironment) {
40+
// // @Column 어노테이션으로 이름이 지정된 경우
41+
// //if (logicalName != null && logicalName.getSchema() != null) {
42+
// return logicalName;
43+
// }
44+
// // 카멜케이스를 스네이크케이스로 변환
45+
// return strategy.toPhysicalColumnName(logicalName, jdbcEnvironment);
46+
// }
47+
}

0 commit comments

Comments
 (0)