2016-12-05 6 views
0
@Configuration 
@EnableWebSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    ... 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
       .antMatchers("/css/**", "/js/**", "/img/**").permitAll() 
       .anyRequest().authenticated() 
       .and() 
      .formLogin() 
       .loginPage("/login") 
       .loginProcessingUrl("/login") 
       .failureForwardUrl("/login?error") 
       .successForwardUrl("/admin") 
       .permitAll() 
       .and() 
      .logout() 
       .logoutSuccessUrl("/login?logout") 
       .permitAll(); 
    } 
} 

のみ以下のクラスにマッピングされた作品上記WebSecurityConfig@Controllerアノテーションが適切に春のセキュリティ4ログインページにマッピングされていない

@Configuration 
public class MvcConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/login").setViewName("login"); 
    } 

} 

私がしようとすると、コントローラで上記のマッピングを置き換え、ログイン要求が正しく処理されず、次のエラーを取得:

ERROR 290168 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet dispatcherServlet threw exception

は、ここに私のコントローラは次のようになります。 :

@Controller 
public class AdminController extends BaseController { 

    @RequestMapping(value = "/login") 
    public String login(Model model) { 
     return "login"; 
    } 
} 

WebMvcConfigurerAdapterマッピングを行いながらAdminController要求のマッピングが動作しない理由を任意のアイデア?

答えて

0

問題が見つかりました。それはWebSecurityConfigとのマッピングではありませんでした。奇妙なことが.failureForwardUrl()メソッドで行われています。ここでは、私が見つけたものです:


は次のように私は無効なログインで

.formLogin() 
    .loginPage("/login") 
    .loginProcessingUrl("/loginProcess") 
    .successForwardUrl("/admin") 
    .failureForwardUrl("/login") 
    .permitAll() 
    .and() 

を見誤り、その結果、完全に実行に失敗し、次のコードは、/ loginProcessでユーザーを残します

.formLogin() 
    .loginPage("/login") 
    .loginProcessingUrl("/loginProcess") 
    .successForwardUrl("/admin") 
    .failureForwardUrl("/") 
    .permitAll() 
    .and() 

W無効なログインの場合、次のコードは/ loginにユーザを残します。エラー

.formLogin() 
    .loginPage("/login") 
    .loginProcessingUrl("/loginProcess") 
    .successForwardUrl("/admin") 
    .permitAll() 
    .and() 
関連する問題