ConfigurerAdapter 클래스에 다음과 같은 설정을 해주면 DB에서 인증을 할 수 있다.

@Autowired     private PasswordEncoder passwordEncoder;     @Autowired

DataSource dataSource; @Override public void configure(AuthenticationManagerBuilder auth) throws Exception { String selectUserQuery = "select id, password, enabled from user where id = ?"; String selectRolesQuery = "select id, roles from user_roles where id = ?"; auth.jdbcAuthentication().dataSource(dataSource).usersByUsernameQuery(selectUserQuery)

.authoritiesByUsernameQuery(selectRolesQuery);

}

시큐리티 쿼리 실행은 JDBCTemplate을 통해서 이뤄진다.

?에는 username 파라메터가 들어간다.

userByUsernameQuery는 select username, password, enabled 순이다.

authoritiesByUsernameQuery는 select username, authorities 순이다.


default setting에 순서에 맞게 매칭 시켜준다.




java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet


집과 회사 톰캣버전을 다르게 해서 git를 써보려고 이짓 저짓 했더니
에러가 속출 이것저것 고치다가 있는데 왜 못찾는지 모르는 에러가 발생

https://stackoverflow.com/questions/11227395/java-lang-classnotfoundexception-org-springframework-web-servlet-dispatcherserv
여기에 해결책이 나왔다.
  • right click on your project and choose properties.
  • click on Deployment Assembly.
  • click add
  • click on "Java Build Path Entries"
  • select Maven Dependencies"
  • click Finish.
댓글도 완변한 솔루션이라고 한다.
하지만 이해가 잘 안된다.
build path에 메이븐 디펜던시가 포함이 안되서 그런건데
그냥 build path설정으로는 안되고
deployment Assembly로 하는게 무슨 의미 일까?


'개발환경 설정' 카테고리의 다른 글

port 6000  (0) 2018.06.28
mac iterm 편리한 커서 이동  (0) 2018.06.13
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet  (0) 2018.01.17
tomcat CORSFilter  (0) 2018.01.08
tomcat https설정하기(SSL/TLS 설정)  (0) 2018.01.03
svn 권한설정  (0) 2017.11.06

인터넷에서 spring security를 검색하면 한글 자료는 대부분 xml 설정으로 되어있다.

먼저 web.xml에 DelegateFilterProxy를 설정하는 것부터 나온다.

그리고 나머지 설정을 외우거나 복붙해서 만든다.

반면 java 설정은 자동완성과 클래스를 들여다 보기때문에 공부하는데 더 좋다.

설정도 web.xml에 필터를 등록할 필요 없다.


먼저 필요한 dependency 설정을 한다.
        <dependency>
  		<groupId>org.springframework.security</groupId>
  		<artifactId>spring-security-web</artifactId>
  		<version>5.0.0.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework.security</groupId>
  		<artifactId>spring-security-config</artifactId>
  		<version>5.0.0.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework.security</groupId>
  		<artifactId>spring-security-taglibs</artifactId>
  		<version>5.0.0.RELEASE</version>
  	</dependency>
자바 설정은 다음 클래스로 시작한다.

@Configuration

@EnableWebSecurity

public class CustomSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter


클래스로 시작하면 된다.


클래스 멤버는 다음과 같다.


아이디와 패스워드 권한을 설정한다. 시작은 인메모리 방식으로~~
    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
          .withUser("user1").password("user1Pass")
          .authorities("ROLE_USER");
    }

    }

경로에 권한 설정과 로그인 페이지 설정을 한다. 로그인 페이지 설정을 안하면 브라우저 prompt로 인증을 요구한다. 로그인 페이지 url을 설정안하면 디폴트 로그인 페이지가 나온다.
        @Override
	protected void configure(HttpSecurity http) throws Exception {
		
		logger.info("http: "+http);
		
		http.httpBasic(); 
		http.authorizeRequests().antMatchers("/main/**").hasRole("USER");		
		http.formLogin().loginPage("/login")
			.usernameParameter("username").passwordParameter("password")
			.permitAll()
			.and();
	}
spring-security 시작은 단순하다.


+ Recent posts