spring security를 설치하고 처음 구동을 하게 되면
바로 이 화면이 뜨게 된다.
일단 시큐리티 5버전 이하라면
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.anyRequest().permitAll();
}
}
이렇게 처리하면 그만이다.
시큐리티 5이상에서는 WebSecurityConfigurerAdapter
가 사용권장되지 않으므로 다른 방식으로 메서드체이닝을 구성해야한다
Spring Security without the WebSecurityConfigurerAdapter
에서 보게되면 WebSecurityConfigurerAdapter
를 상속받는 대신에 SecurityFilterChain
bean을 등록하면 된다고 나와있다
@EnableWebSecurity
@AllArgsConstructor
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.anyRequest().permitAll();
return http.build();
}
}
위의 코드는 csrf를 막는코드이고
http.authorizeRequests().antMatchers("/**").permitAll()
.anyRequest().authenticated();
return http.build();
이렇게 추가해주면 모든 주소에 대한 권한을 풀어주어 어떤 화면이든 login 없이 이용할수 있게 된다.
짠 그러면 login 화면이 더이상 안보인다 !!!
안녕하세요. Spring security login화면 없애기를 하고 있는데요. 구글링을 하다 보니 작성하신 해결 방법을 보게 되었는데요. 며칠 동안 해결을 하지 못해서 문의 드립니다.
현재 환경은 <spring.maven.artifact.version>4.0.9.RELEASE</spring.maven.artifact.version> <egovframework.rte.version>3.5.0</egovframework.rte.version>이고
context-security.xml 구조가 아래 처럼 되어 있습니다.
<security:http pattern="/js/" security="none"/>
<security:http pattern="/resource/" security="none"/>
<security:http pattern="\A/WEB-INF/jsp/.*\Z" request-matcher="regex" security="none"/>
<egov-security:config id="securityConfig"
loginUrl="/j_spring_security_check"
logoutSuccessUrl="/logout.jsp"
loginFailureUrl="/uat/uia/egovLoginUsr.do?login_error=1"
accessDeniedUrl="/sec/ram/accessDenied.do"
로그인 시 타는 class 는 아래 처럼 되어 있습니다.
public String getRequestURI()
{
return ((HttpServletRequest)super.getRequest()).getContextPath() + "/j_spring_security_check";
}
public String getParameter(String name)
{
if (name.equals("j_username")) {
return this.username;
}
if (name.equals("j_password")) {
return this.password;
}
return super.getParameter(name);
}
시큐리티 5버전 이하 버전에 대한 해결 방법이 있는데 5이하 버전을 context-security.xml에서 확인 해야 하나요? 아니면 다른 곳에서 확인을 해야 하는지 문의 드립니다.
저의 구조인 경우에는 Spring security login화면 없애려면 어떤 설정을 해야 하는지 조금이라도 도움을 주시면 너무 감사하겠습니다.
그럼 즐거운 금요일 보내세요~