조언부탁드립니다
382
3 asked
시큐리티를 적용하지 않고 JSP나 스프링으로 게시판을 만들때 자기가 작성한 글과 댓글만 수정하도록 하려면
로그인 성공하면 세션에 id값을 저장하고
게시글에 해당하는 model에 세션에 저장한 id를 넣어서 나중에 view단에서 서로 일치하면
글,수정 버튼이 보이는 방식으로 만들었는데 혹시 시큐리티를 통해서는 이런 방식과 다르게 적용할수도 있을까요
현업에서는 어떻게 하는지 궁금합니다
Answer 2
1
처리 방식은 비슷하겠지만 특정한 값을 세션에 저장하고 참조하는 방식이 아닌 스프링 시큐리티의 인증 정보를 활용하는 방식으로 처리하면 됩니다.
첫번째 예시
클라이언트나 서버 모두 현재 로그인한 사용자의 인증 정보를 SecurityContext 에서 참조해서 로직에 활용
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Object principal = authentication.getPrincipal();
String username = null;
if(principal != null && principal instanceof User){
username = ((User) principal).getUsername();
}
두번째 예시
View 단이 아닌 서버단에서 인증 및 본인여부를 체크하여 보호하고자 하는 메서드의 실행여부를 결정할 수 도 있습니다.
즉 View 단에서 아무 사용자가 본인의 글에 대하여 수정 요청을 할 경우라도 서버단에서 권한을 체크하는 방식입니다.
// 로그인한 사용자이고 본인인 경우나 혹은 전체 관리자인 경우 수정 메서드가 실행되고 그렇지 않을 경우엔
// 403 에러 발생함
@PreAuthorize("isAuthenticated() and (( #user.name == principal.name ) or hasRole('ROLE_ADMIN'))")
@RequestMapping( value = "", method = RequestMethod.PUT)
public ResponseEntity<Message> updateUser(User user ){
messageService.updateMessage( "메시지 저장");
return new ResponseEntity<Message>( new Message("수정성공"), HttpStatus.OK );
}
세번째 예시
View 단에서 시큐리티 표현식 문법을 사용해서 권한제어를 할 수도 있겠죠
<sec:authentication var="principal" property="principal"/>
<c:if test="${principal eq 게시글 아이디}">
수정하기버튼
</c:if>
기억하실 점은 스프링 시큐리티의 인증 및 인가정보를 어디에서, 어떻게 참조하는지의 방법을 명확하게 이해하는 것입니다.
시큐리티 공부 버전 질문
0
175
1
[해결 방법] MethodSecurityConfig.customMethodSecurityMetadataSource() 호출하지 않는 이슈
0
185
1
AbstractSecurityInterceptor.class.beforeInvocation()를 2번 실행하는 경우
0
174
1
강의 코드가 왜이렇게 뒤죽박죽인가요...
0
249
1
메인 페이지로 접속해도 login url로 리다이렉트가 되지 않습니다..
0
235
1
파라미터값이 넘어가지 않습니다 ....
0
374
1
security filterChain 설정 질문이 있습니다.
0
330
1
소스 부분 질문 드립니다.
0
208
2
섹션4 7번 강의 문제가 있는거 같네요.
0
344
2
파일이 수시로 이름이 바껴있네요 ㄷㄷ
0
304
1
HttpSessionSecurityContextRepository를 사용안하는 문제
0
555
2
error , exception 이 잘 안됩니다.
0
278
2
thymeleaf tag 질문합니다.
0
196
2
버전업하면서 deprecated된 것들이 너무많아요
0
478
1
spring security 패치 관련
0
437
1
모바일을 사용할때 토큰말고 세션
0
845
2
DB 연동한 인가 부분에 대한 질문입니다!
0
264
1
Ajax방식도 똑같이 Session방식을 사용하는건가요?
0
307
1
Config 파일 생성 시 질문이 있습니다.
0
225
1
강사님 몇일동안 구글 검색만 100개 했는데도 이유를 모르겠습니다..
1
429
2
403 에러 뜹니다.
0
813
2
login_proc의 존재에 대한 간략한 설명입니다
0
275
1
top.html에 로그인 링크를 만들어서 로그인을 해봤습니다
0
278
2
안녕하세요. DB에 저장될 때 이해 안 가는 값이 있어서 질문드립니다!
0
189
1

