티스토리 뷰
Spring/Spring Security
Spring Security : Web MVC + Security - 접근 거부 Custom 페이지 생성
Korean Eagle 2020. 5. 17. 18:36728x90
1. 사용자가 로그인을 성공했지만 권한이 없는 페이지로 접근한 경우 에러 페이지가 보여진다.
2. 이 페이지를 custom page로 바꾸는 방법에 대한 포스트다.
3. Security Config에 접근 거부가 생긴 경우 전환할 url을 설정한다.
3-1 접근 거부가 발생한 경우 security filters는 설정된 url로 request를 요청하게 된다.
3-1-1 아래 소스의 마지막 줄 .exceptionHandling().accessDeniedPage() 설정의 url을 설정할 수 있다.
package pe.pilseong.springsecurity.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.User.UserBuilder;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
UserBuilder users = User.withDefaultPasswordEncoder();
auth.inMemoryAuthentication()
.withUser(users.username("pilseong").password("pilseong").roles("EMPLOYEE"))
.withUser(users.username("suel").password("suel").roles("EMPLOYEE", "MANAGER"))
.withUser(users.username("noel").password("noel").roles("EMPLOYEE", "ADMIN"));
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/employees").hasRole("EMPLOYEE")
.antMatchers("/leaders/**").hasRole("MANAGER")
.antMatchers("/systems/**").hasRole("ADMIN")
.and()
.formLogin()
.loginPage("/showLoginPage")
.loginProcessingUrl("/authenticateUser")
.permitAll()
.and()
.logout()
.logoutSuccessUrl("/")
.permitAll()
.and()
.exceptionHandling().accessDeniedPage("/access-denied");
}
}
4. Controller에 위에서 설정한 context root /access-denied 요청을 처리할 메소드를 추가한다.
package pe.pilseong.springsecurity.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class LoginController {
@GetMapping("/showLoginPage")
public String showLoginPage() {
return "plain-login";
}
@GetMapping("/access-denied")
public String showAccessDeniedPage() {
return "access-denied";
}
}
5. access-denied.jsp페이지를 적성한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Access denied</title>
</head>
<body>
<h1>Company Website</h1>
<hr>
<p>
Access Denied - you are not authorized to access this page
</p>
<hr>
<p>
<a href="${ pageContext.request.contextPath }/">Back to Landing Page</a>
</p>
</body>
</html>
5-1 결과 화면은 다음과 같다.
728x90
'Spring > Spring Security' 카테고리의 다른 글
Spring Security : Web MVC + Security + JDBC 으로 인증 구현하기 (0) | 2020.05.17 |
---|---|
Spring Security : Web MVC + Security - Role에 따라 내용 보여주기 (0) | 2020.05.17 |
Spring Security : Web MVC + Security - 페이지 접근 제어 (0) | 2020.05.17 |
Spring Security : Web MVC + Security - Landing Page 사용하기 (0) | 2020.05.17 |
Spring Security : Web MVC + Security - Security JSP Tag Library 사용하기 (0) | 2020.05.17 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
TAG
- 외부파일
- one-to-many
- 자바
- 스프링
- 매핑
- hibernate
- Spring Security
- Validation
- 상속
- RestTemplate
- Spring
- XML
- 로그인
- one-to-one
- form
- crud
- Many-To-Many
- WebMvc
- login
- Rest
- Angular
- spring boot
- Security
- jsp
- 하이버네이트
- 설정
- 스프링부트
- 설정하기
- MYSQL
- mapping
250x250