Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 소켓통신
- AWS사용자
- hmlt
- AWS 청구
- web browser external
- MFC
- jsp에러
- oracle 18
- html사용자함수
- 오라클 c##제거
- C++
- jsNature
- springboot
- JPA
- AWS경보
- aws
- html주문폼
- servlet에러
- bootstrap
- hit desktop
- Update
- AWS요금
- IP통신
- TCP/IP
- js구구단
- git stah
- IAM 결제
- SpringToolSuite4
- 깃헙 데스크탑
- javasecurity
Archives
- Today
- Total
Ynns
spring security 프로젝트(5) 어노테이션 본문
servlet-context.xml 에서 어노테이션 활성화
<!-- @PreAuthorize @PostAutorize @Secured -->
<security:global-method-security pre-post-annotations="enabled" secured-annotations="enabled" />
BoardController 에서 새 글 쓰기 막기
@PreAuthorize("isAuthenticated()")//글을 등록할 수 있는 권한확인!! , isAuthenticated() : 로그인-> true / 로그아웃 -> false
@GetMapping("/register")
public void register() {
log.info("새 글 작성 폼 요청");
}
@PreAuthorize("isAuthenticated()")
@PostMapping("/register")
public String newRegistPost(BoardVO vo, RedirectAttributes rttr) {
log.info("새 글 작성");
/*
* // (28) if (vo.getAttachList() != null) { for (BoardAttachVO attach :
* vo.getAttachList()) { log.info("" + attach); } }
*/
if(vo.getAttachList()!=null){
vo.getAttachList().forEach(attach->System.out.println(attach));
}
if (service.newRegist(vo)) {
rttr.addFlashAttribute("result", vo.getBno());
}
return "redirect:/board/getList";
}
register.jsp 수정하기( tablib, principal )
새 글 작성시 writer에 사용자명 자동 등록
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
...
<div class="form-group">
<label>Writer</label>
<input class="form-control" name="writer" required="required"
value='<sec:authentication property="principal.username"/>' readonly="readonly">
</div>
...
security에서 username == userid 같은 의미
read.jsp 인증된 사용자(글쓴이)가 아니라면 글을 수정하지 못하게 Modify 버튼 막기
<sec:authentication property="principal" var="info"/>
<sec:authorize access="isAuthenticated()">
<c:if test="${info.username==vo.writer}"></c:if>
<button type="button" class="btn btn-default">Modify</button>
</sec:authorize>
<button type="reset" class="btn btn-info">List</button>
<!-- 글쓰기 에러 수정 --!>
#user0 로그인 후 글쓰기 ==> [spring security가 CSRF 공격 자체를 방어함] ==> post 요청 거부 ==> 403 error
==> register.jsp 안에 csrf 토큰 값을 같이 넘겨 준다
register.jsp
...
<button type="submit" class="btn btn-default">Submit</button>
<button type="reset" class="btn btn-default">reset</button>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
</form>
...
read.jsp 로그인 없이 댓글 쓰기 막기
...
Reply
<sec:authorize access="isAuthenticated()">
<button id='addReplyBtn' class='btn btn-primary btn-xs pull-right'>New Reply</button>
</sec:authorize>
...
'JAVA > Spring' 카테고리의 다른 글
페이지 로그인 시 접속한 브라우저 정보 log 저장 (0) | 2020.04.01 |
---|---|
spring security 프로젝트 (6) 중간 실행 (0) | 2019.11.26 |
spring security 프로젝트(4) (0) | 2019.11.26 |
spring 프로젝트 암호화 로그인 오류 해결 (0) | 2019.11.14 |
spring security 프로젝트 (3) (0) | 2019.11.08 |
Comments