SpringBoot-SpringSecurity 로그아웃 권한 제어 설정 방법

환경.
IDEA :2020.1
Maven:3.5.6
SpringBoot:2.0.9(기 존 에 통 합 된 버 전 2.3.3 과 달리 버 전 적합 문제,맞 춤 형 사용 을 위 한 강등)
1.로그아웃
여기 서도 주의해 야 할 전제 문제 가 있 습 니 다.우리 의 로그 인 작업 은 모두 도 메 인 공격 을 방지 하 는 환경 에서 이 루어 집 니 다.
취소 도 이런 상황 에서 이 뤄 진 것 임 에 틀림없다.
로그 인 할 때 우 리 는 폼 을 제출 하고 POST 방법 으로 전송 합 니 다.Thymeleaf 를 사용 하여 form 폼 에 th:action 요 소 를 추가 하면 Thymeleaf 는 자동 으로 우리 에 게 를 추가 합 니 다.csrf 요소.
마찬가지 로 로그아웃 작업 도csrf 매개 변수 인증.

<form th:action="@{/logout}" method="post">
			<button type="submit" >  </button>
</form>
우 리 는 그것 을 폼 단추 로 만 들 고 POST 방법 으로 전송 하 며 SpringSecurity 가 제공 하 는 기본/logout 방법 으로 로그아웃 합 니 다.
개발 자 는 Controller 에서 이/logout 방법 을 설정 하지 않 아 도 됩 니 다./login 과 마찬가지 로 이것 은 SpringSecurity 에서 제공 합 니 다.
이전에 로그 인 한 설정 클래스 에서 로그 인 한 각종 속성 을 설정 하면 됩 니 다.

.and()  //        
  .logout()
  	.logoutSuccessUrl("/index") //     ,     
 /* 	.logoutUrl()         URL,    /logout
  	.invalidateHttpSession()     session,  ture
  	.deleteCookies()        cookies  
세 션 을 없 애 면 쉽게 이해 할 수 있 습 니 다.한 번 의 대 화 는 로그아웃 하거나 페이지 를 닫 으 면 자동 으로 삭 제 됩 니 다.
기억 해 줘.
cookies 는 중점적으로 소개 해 야 합 니 다.이것 도 저희 가 자주 사용 하 는 기억 입 니 다.페이지 나 브 라 우 저 를 닫 은 후에 다음 에 페이지 를 열 때 이전에 로그 인 한 사용자 로 로그 인 합 니 다.
이 를 위해 서 는 로그 인 폼 에 내 옵션 을 추가 해 야 합 니 다.

tr>
<td>
<input type="checkbox" name="remember-me">
</td>
<td>Remember me on this computer.
</td>
</tr>
동시에 설정 클래스 에서 열 려 나 를 기억 해.

.and()
  .rememberMe(); 
여기 checkbox 의 name 은 기본 remember-me 를 사용 합 니 다.마찬가지 로 이 cookies 의 name 도 브 라 우 저 에 의 해 기억 되 고 저 희 는 켜 서 기억 하면 사용 할 수 있 습 니 다.
name="remember-me"을 사용 하지 않 고 다른 name 속성 값 을 사용 하려 면 SpringSecurity 가 나 를 기억 할 지 여 부 를 설정 해 야 합 니 다.

.and()
  .rememberMe().rememberMeParameter("rememberme"); 
//           name<input name="rememberme">,   remember-me
deleteCookies()방법의 설정 으로 돌아 가 지정 한 cookies 를 없 애 려 면 cookies 의 이름 을 지정 하면 됩 니 다.

.and()
  .logout().logoutSuccessUrl("/index").deleteCookies("remember-me") 
 //   name="remember-me"  cookies
브 라 우 저 로그 인

로그 인 후 F12,cookies 보기

첫 번 째 는 cookies 이 고,두 번 째 는 이번 세 션 의 session 대상 입 니 다.
cookies 는 기한 이 있 고 기본 값 은 14 일 입 니 다.
로그아웃 을 누 르 십시오.

cookies 삭제 설정 으로 cookies 가 삭제 되 었 습 니 다.
다시 로그 인 합 니 다.이번 에는 저 를 기억 하 는 것 을 선택 하지 않 았 습 니 다.동시에 session 도 같은 것 이 아니 라 값 이 바 뀌 었 습 니 다.

2.권한 제어
이 동시에 페이지 는 또 하나의 중요 한 수요 가 실현 되 지 않 았 다.
권한 이 없 는 사용 자 는 클릭 한 입구(무공 비적)를 보지 말 아야 합 니 다.얻 지 못 하 는 것 이 가장 갖 고 싶다 는 것 은 네가 그 를 탐 내 는 것 이 아니 냐!그 를 해 칠 수 는 없다.
이에 Thymeleaf 와 SpringSecurity 를 결합 해 어떤 사용자 가 어떤 내용 을 볼 수 있 는 지 확인 할 수 있 습 니 다.
우선,thymeleaf-springsecurity 통합 의존 도 를 가 져 와 야 합 니 다.

<!--  thymeleaf-springsecurity  -->
<!--  https://mvnrepository.com/artifact/org.thymeleaf.extras/thymeleaf-extras-springsecurity4 -->
  <dependency>
   <groupId>org.thymeleaf.extras</groupId>
   <artifactId>thymeleaf-extras-springsecurity4</artifactId>
   <version>3.0.4.RELEASE</version>
  </dependency>
페이지 탭 에 네 임 스페이스 가 져 오기

<html xmlns:th="http://www.thymeleaf.org"
	 xmlns:sec="https://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
페이지 아래 권한 제한 이 필요 한 내용 을 포장 합 니 다.

<div sec:authorize="!isAuthenticated()">
	<h2 align="center" >    ,         
		<a th:href="@{/toLogin}">   </a> 
	</h2>
	</div>
sec:authorize="!isAuthenticated()는 로그 인 인증 되 지 않 은 사용자 만 볼 수 있 는 내용 을 표시 합 니 다.

<div sec:authorize="isAuthenticated()">
		<a>
			Count: <span sec:authentication="name"></span>
		</a>
		<form th:action="@{/logout}" method="post"><!--        -csrf   ,  (   )    -->
			<button type="submit" >  </button>
		</form>
	</div>
sec:authorization="is Authenticated()"는 로그 인 인증 을 받 은 사용자 만 볼 수 있 는 내용 을 표시 합 니 다.
sec:authentication="name"은 인증 을 받 은 사용자 의 사용자 이름 을 표시 합 니 다.
아,잊 지 마 세 요.중점,일부 무공 비적 은 권한 이 없 는 사용자 에 게 보 여 서 는 안 됩 니 다.예 를 들 어 level 2 의 태극권,칠 상 권,사다리 운 종 등 입 니 다.하하 하

<div sec:authorize="hasRole('level2')">
<h3>      </h3>
<ul>
	<li><a th:href="@{/level2/1}">   </a></li>
	<li><a th:href="@{/level2/2}">   </a></li>
	<li><a th:href="@{/level2/3}">   </a></li>
</ul></div>
sec:authorise="hasRole('level 2')"는 level 2 권한 을 가 진 사용자 만 볼 수 있 도록 규정 하고 있 습 니 다.
다른 것 은 이런 식 으로 설정 할 수 있 습 니 다.
그 밖 에 다른 맞 춤 형 설정,권한(role),권력(authority),IP,허용 여부(permission)도 있 습 니 다.
spring security 5.1.6 버 전 은 소스 코드 의 측면 에서 서로 다른 hasAuthority,hasRole 방법 으로 권한 을 판단 할 때의 차 이 를 알 수 있 습 니 다.사실 그들 이 최종 적 으로 호출 한 것 은 모두 hasAny Authority Name()방법 입 니 다.유일 하 게 다른 것 은 hasRole()가 호출 할 때 접두사 defaultRole Prefix 를 전달 하여 이들 이 비교 하 는 문자 에 차이 가 생 겼 습 니 다.spring security 는 권한 문자 에 ROLE 를 붙 였 다 는 뜻 이 라 고 생각 할 것 입 니 다.바로 역할 Role 입 니 다.추가 하지 않 으 면 권한 Authority 입 니 다.

SpringSecurity 는 모두 우 리 를 위해 제공 하고 있다.
SpringBoot-SpringSecurity 에 대한 로그아웃,권한 제어 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringSecurity 로그아웃 권한 제어 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기