我有一个间谍启动程序2.4.2。我设置了javasecuity登录表单,没有任何问题。
现在,如果会话丢失,我希望我的ajax请求得到一个错误,而不是重定向。
我向websecurityconfigureradapter添加了一个authenticationentrypoint,似乎可以按预期工作。问题是,我再也不能得到默认的登录和注销形式显示。我得到一个404错误。
我的安全配置
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private MyLogoutSuccessHandler myLogoutSuccessHandler;
protected void configure(final HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/login**").permitAll()
.antMatchers("/api/**").permitAll()
.antMatchers("/css/**").permitAll()
.anyRequest().authenticated()
.and().formLogin().defaultSuccessUrl("/checador")
.and().logout().logoutSuccessHandler(myLogoutSuccessHandler)
.and()
.exceptionHandling().
authenticationEntryPoint(new AjaxAwareAuthenticationEntryPoint("/login"))
;
}
这是我的LoginUraAuthenticationEntryPoint类
@Slf4j
public class AjaxAwareAuthenticationEntryPoint extends LoginUrlAuthenticationEntryPoint
{
public AjaxAwareAuthenticationEntryPoint(String loginFormUrl) {
super(loginFormUrl);
}
public void commence(
HttpServletRequest request,
HttpServletResponse response,
AuthenticationException authException)
throws IOException, ServletException {
String ajaxHeader = ((HttpServletRequest) request).getHeader("X-Requested-With");
boolean isAjax = "XMLHttpRequest".equals(ajaxHeader);
if (isAjax) {
response.sendError(HttpServletResponse.SC_FORBIDDEN, "Ajax REquest Denied (Session Expired)");
} else {
super.commence(request, response, authException);
}
}
}
这样我会得到一个“有一个意外错误(type=notfound,status=404)。”如果我对authenticationentrypoint进行注解,我将看到默认的java安全会话登录表单。
怎样才能在里面启用呢?
谢谢
暂无答案!
目前还没有任何答案,快来回答吧!