spring authenticationentrypoint不会显示默认的spring会话定义表单(404错误)

hgqdbh6s  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(149)

我有一个间谍启动程序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安全会话登录表单。
怎样才能在里面启用呢?
谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题