- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Spring Boot 应用程序中使用 PersistentTokenBasedRememberMeServices (Spring Security 4.0.3)。这是 token 配置的片段:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin()
.failureHandler(myAuthenticationFailureHandler).loginProcessingUrl("/login").usernameParameter("username").passwordParameter("password")
.and().exceptionHandling()
.and().authorizeRequests()
.antMatchers(this.getOpenURLS()).permitAll().anyRequest().authenticated().and().addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class).csrf().csrfTokenRepository(csrfTokenRepository())
.and().rememberMe().rememberMeServices(rememberMeServices()).key(C_REMEMBER_ME_APP_KEY).and().logout();
}
@Bean
public AbstractRememberMeServices rememberMeServices() {
PersistentTokenBasedRememberMeServices rememberMeServices = null;
try {
rememberMeServices = new PersistentTokenBasedRememberMeServices(C_REMEMBER_ME_APP_KEY, userDetailsService, persistentTokenRepository());
rememberMeServices.setTokenValiditySeconds((int) TimeUnit.SECONDS.convert(2, TimeUnit.DAYS));
rememberMeServices.setParameter(C_REMEMBER_ME_PARAMETER);
} catch (SQLException e) {
e.printStackTrace();
}
return rememberMeServices;
}
org.springframework.security.web.authentication.rememberme.CookieTheftException
每当提出这个问题。例如,因为我想确保我可以捕获这个异常,我开始与一个用户的 session ,进入数据库并更改 token (存储在浏览器中的不同值)并重新启动 tomcat 服务器。当我尝试访问该应用程序时,立即出现
CookieTheftException
被抛出。
@Bean(name = "simpleMappingExceptionResolver")
public SimpleMappingExceptionResolver createSimpleMappingExceptionResolver() {
SimpleMappingExceptionResolver r = new SimpleMappingExceptionResolver();
Properties mappings = new Properties();
mappings.setProperty("CookieTheftException", "cookieException");
mappings.setProperty(".CookieTheftException", "cookieException");
mappings.setProperty("org.springframework.security.web.authentication.rememberme.CookieTheftException", "cookieException");
r.setOrder(Integer.MIN_VALUE);
r.setExceptionMappings(mappings);
r.setDefaultErrorView("error");
r.setExceptionAttribute("ex");
r.setWarnLogCategory("example.MvcLogger");
return r;
}
@ControllerAdvice
public class GlobalDefaultExceptionHandler {
public static final String DEFAULT_ERROR_VIEW = "errorCookie";
@ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
ModelAndView mav = new ModelAndView();
mav.addObject("exception", e);
mav.addObject("url", req.getRequestURL());
mav.setViewName(DEFAULT_ERROR_VIEW);
return mav;
}
最佳答案
我为此挣扎了很长时间,找不到任何有意义的东西。当我正在研究您使用 ErrorController
的建议时作为一种解决方法,我注意到 BasicErrorController
说这个:* {@code @ExceptionHandler}) or by adding servlet
* {@link AbstractEmbeddedServletContainerFactory#setErrorPages container error pages}.
既然你说你的工作有效,我认为可以通过使用 addErrorPages
将它们添加到 servlet 容器中来捕获相同的错误。 .瞧,我的 @Configuration
类(class):
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return container -> {
container.addErrorPages(new ErrorPage(CookieTheftException.class, "/login"));
};
}
关于Spring Security CookieTheftException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33715818/
我在 Spring Boot 应用程序中使用 PersistentTokenBasedRememberMeServices (Spring Security 4.0.3)。这是 token 配置的片段
我有一个 grails 服务器和一个 iOS 客户端,它们通过 POST 消息通过 HTTPS 进行通信。我正在使用 PersistentTokenBasedRememberMeServices 来确
我有一个带有 spring-boot 2.0.1 并受 spring-security 保护的 Web 应用程序。我为 Remember-Me 使用 PersistentTokenRepository
我是一名优秀的程序员,十分优秀!