5847927828
611
2020-07-31 01:52:02
1
129

스프링 시큐리티 config


제가원래 스프링 설정파일들을 다 xml로만 사용하다가 이번엔 자바로한번 써보려고하는데

아래 코드에 문제가있는건지 ... 

<form action = "/loginPage" method = "post">

이렇게 폼을 loginPage로 보내도  404페이지만 뜨네요;


왜이럴까요 ㅠ



@EnableWebSecurity
@EnableGlobalMethodSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private DataSource dataSource;  
        @Override
        public void configure(WebSecurity web) throws Exception {
            // 허용되어야 할 경로들
            web.ignoring().antMatchers("/resources/**", 
                                       "/dist/**", 
                                       "/weather", 
                                       "/user/password/find",
                                       "/user/join",
                                       "/user/email",
                                       "/user/send/temppw",
                                       "/findpw", 
                                       "/user/findpw",
                                       "/user/cert/check",
                                       "/join", 
                                       "/getLanguage/**",
                                       "/getMessage"); // #3
        }
        
        @Override
        protected void configure(HttpSecurity http) throws Exception {
     
            // 로그인 설정
            http.authorizeRequests()
                // ROLE_USER, ROLE_ADMIN으로 권한 분리 유알엘 정의
                .antMatchers("/", "/user/login", "/error**").permitAll()
                .antMatchers("/**").access("ROLE_USER")
                .antMatchers("/**").access("ROLE_ADMIN")
                .antMatchers("/admin/**").access("ROLE_ADMIN")
                .antMatchers("/**").authenticated()
            .and()
                // 로그인 페이지 및 성공 url, handler 그리고 로그인 시 사용되는 id, password 파라미터 정의
                .formLogin()
                .loginPage("/loginPage")
                .defaultSuccessUrl("/")
                .usernameParameter("email")
                .passwordParameter("password")
            .and()    
                // 로그아웃 관련 설정
                .logout().logoutRequestMatcher(new AntPathRequestMatcher("/user/logout"))
                .logoutSuccessUrl("/")
                .invalidateHttpSession(true)
            .and()
                // csrf 사용유무 설정
                // csrf 설정을 사용하면 모든 request에 csrf 값을 함께 전달해야한다.
                .csrf();
        }
     
    



    // Equivalent of jdbc-user-service in XML
    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {

        auth
            .jdbcAuthentication()
                .dataSource(dataSource)
                .usersByUsernameQuery("SELECT email, password, enabled FROM sns_user WHERE email=?")
                .authoritiesByUsernameQuery("SELECT email, authority FROM sns_authorities where email=?");
    }
}




0
  • 답변 1

  • 퀘이사123
    282
    2020-07-31 11:12:28

    따로 설정하시지 않으면 form태그에 액션은 /login으로 해주서야 할거에요.


    /loginPage로 하고 싶으시면 설정부분 formLogin부분에 loginProcessUrl이라고 있는데 거기에 loginPage로 


    설정주시면 될거구요.

  • 로그인을 하시면 답변 을 등록할 수 있습니다.