0
私は春のMVCアプリケーションで作業しています。セキュリティを追加しようとしています。すべて正常に動作します。 DOC http://docs.spring.io/autorepo/docs/spring-security/4.0.4.RELEASE/reference/htmlsingle/#abstractsecuritywebapplicationinitializer-with-spring-mvcSpring 4 MVC +セキュリティの問題
に従って
は、次の実装を追加しました。
- MessageSecurityWebApplicationInitializer
- MessageWebApplicationInitializer
- SecurityConfig
ログインフォーム作品。
は成功の承認の後、持っている - HTTPステータス404から
また、私は承認後のAppControllerにメソッドをデバッグすることができ、私は次の方法public String listPatients(ModelMap model)
を意味します。
なぜ私は404を持っていますか?私は何を修正すべきですか?
public class MessageSecurityWebApplicationInitializer
extends AbstractSecurityWebApplicationInitializer {
}
public class MessageWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{AppConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{AppConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[] {"/*"};
}
}
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("user").roles("USER");
}
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic();
}
}
@Controller
@RequestMapping("/")
public class AppController {
public static final String jsonPage = "json";
@RequestMapping(value = {"/"}, method = RequestMethod.GET)
public String listPatients(ModelMap model) {
model.addAttribute("json", "test"}");
return jsonPage;
}
BR!
私は春のセキュリティとログ記録をオンにするお勧めします+春M VCとそれが何をしているか見ることができます。 – Kurtymckurt
まず、アプリケーションのロードを2回停止します。あなたの 'AppConfig'はルートとサーブレットの両方のコンテキストに対して' AppConfig'を読み込んで、アプリケーション全体を効果的に複製します。ルート(サービス、リポジトリ、インフラストラクチャ)とサーブレットコンテキスト(コントローラなどのWeb関連のもの)で設定を分割します。 –
私は@ M.Deinumに同意します。起動時にログを確認すると、2つのコンテキストが作成されていることがわかります。それをしないで、あなたのconfigsを分割してください(下の私の答えをチェックしてください) –