我還是不明白你爲什麼必須實現您自己的訪問處理程序...我目前面臨着相同的任務:
<security:access-denied-handler error-page="/accessDenied"/> - works like charm.
不要忘了在你的控制器到指定的處理程序:
@RequestMapping(value = "/accessDenied")
public String accessDenied() {
return "accessDenied"; // logical view name
}
更新春季啓動(2014年10月):
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.exceptionHandling().accessDeniedHandler(customHandler) OR .accessDeniedPage("/somePage.html").and
.formLogin()
.failureHandler(ajaxAuthenticationFailureHandler)}
現在我們真的不返回意見對於這樣的任務,因爲角js的踢,所以你可以使用你的失敗/成功處理程序並返回定製的JSON響應。對於我們來說,使用失敗處理程序就足夠了,但是你可以選擇你想要控制的地方。我們通常不使用視圖解析器,因爲UI瓦片框架(例如角度偏差)能夠構建成單個頁面爲你。 HTML片段存儲在服務器上,並僅作爲靜態資源提供。
可以使用嵌入式Tomcat來實現與web.xml類似的行爲!
@Configuration
@EnableAutoConfiguration
public class ApplicationWebXml extends SpringBootServletInitializer {
private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.profiles(addDefaultProfile())
.showBanner(false)
.sources(Application.class);
}
//required for container customizer to work, the numerous tutorials didn't work for me, so I simply tried overriding the default one
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
return tomcat;
}
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer(
) {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
TomcatEmbeddedServletContainerFactory containerFactory = (TomcatEmbeddedServletContainerFactory) container;
containerFactory.setSessionTimeout(1); // just for your interest, remove as necessary
containerFactory.addErrorPages(new ErrorPage(HttpStatus.FORBIDDEN,"/views/accessDenied.html"),
new ErrorPage(HttpStatus.NOT_FOUND,"/views/notFound.html"));
containerFactory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
connector.setPort(8082);// just for your interest, remove as necessary
}
});
}
};
}
}
什麼是理想的行爲? – axtavt 2010-11-15 16:57:03
添加了所需的行爲 – ALOToverflow 2010-11-15 18:29:53
您如何使用標籤?你使用類似這樣的東西嗎?: 並且在你的控制器中你有一個controllerUrl,它返回到403.html –
Javi
2010-12-02 16:50:37