如何在没有XML配置的情况下定义自定义AuthenticationEntryPoint
我已经挣扎了好几天了.我是
Spring Boot的新手,并且喜欢不使用XML配置的想法.
我创建了一个RESTfull应用程序(使用JSON).我正在关注this tutorial以正确配置身份验证. 我认为我设法使用Java配置重现几乎所有的配置,除了一件事 – AuthenticationEntryPoint 本教程使用http标记中的属性,并按以下方式定义formLogin: <http entry-point-ref="restAuthenticationEntryPoint"> <intercept-url pattern="/api/admin/**" access="ROLE_ADMIN"/> <form-login authentication-success-handler-ref="mySuccessHandler" authentication-failure-handler-ref="myFailureHandler" /> <logout /> </http> Spring Security manual中的AuthenticationEntryPoint说明说:
没有提到有关如何使用Java配置执行此操作的任何内容. 那么如何在没有XML的情况下“注册”我自己的restAuthenticationEntryPoint,以防止在使用formLogin时重定向到登录表单? 下面我将提到我尝试过的内容. 谢谢你们. 在我的尝试中,发现你可以使用basicAuth定义它,如下所示: @Configuration @Order(1) public static class RestWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { if (restAuthenticationEntryPoint == null) { restAuthenticationEntryPoint = new RestAuthenticationEntryPoint(); } http .authorizeRequests() .antMatchers("/**").hasAnyRole(Sec.ADMIN,Sec.SUPER_USER) ... .and() .httpBasic() .authenticationEntryPoint(restAuthenticationEntryPoint) 但我正在使用这样的表单登录(没有httpBasic部分): .and() .formLogin() .successHandler(mySavedRequestAwareAuthenticationSuccessHandler) .failureHandler(simpleUrlAuthenticationFailureHandler) 问题是,当它没有收到凭据时,它会重定向到登录表单.由于这是一个REST服务,它不应该. FormLoginConfigurer的documentation(类.formLogin()使用)说:
但是找不到覆盖它的方法. 附:
您提供的参考文档的引用指向http.exceptionHandling().您可以在那里设置共享入口点.
http.exceptionHandling().authenticationEntryPoint(myEntryPoint); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |