我在前端使用弹簧靴和棱角分明.有时我想直接从服务重定向.我们只使用.html,.css和脚本文件(没有.jsp).
这是返回“static / pages / savepassword.html”;我是如何尝试重定向到savepassword的
那么第一个问题如何在这种情况下正确重定向?
接下来,Spring找不到我的html文件.我有这个结构
我读到spring应该自动找到“静态”中的所有静态文件,但事实并非如此.所以我尝试配置我的ViewControllerRegistry和RessourceControllerRegistry
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
registry.addResourceHandler("/static/**").addResourceLocations("/static/");
// registry.addResourceHandler("/stylesheets/**").addResourceLocations("/stylesheets/");
// registry.addResourceHandler("/scripts/**").addResourceLocations("/scripts/");
// registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
super.addViewControllers(registry);
registry.addViewController("/savePassword").setViewName("static/pages/savePassword.html");
registry.addViewController("/login").setViewName("static/pages/login.html");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
当我直接调用“static / pages / login.html”时,它可以工作.当我想打电话给“/ login”时,它说404.
第二个问题:我需要配置什么,不需要配置什么?
更新-1:Spring Security
http
.authorizeRequests().antMatchers("/login", "/logout", "/user/**").permitAll()
.anyRequest().authenticated()
.and()
.exceptionHandling()
.accessDeniedHandler(new CustomAccessDeniedHandler())
.authenticationEntryPoint(new CustomAuthenticationEntryPoint())
.and()
.requiresChannel()
.anyRequest().requiresSecure()
.and()
.csrf()
.disable()
//.csrfTokenRepository(csrfTokenRepository())
.addFilterBefore(new MDCFilter(), ExceptionTranslationFilter.class)
// .addFilterBefore(new CorsFilter(),// ChannelProcessingFilter.class)
//.addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class)
.formLogin()
.successHandler(new CustomSuccessAuthenticationHandler())
.failureHandler(new CustomFailureHandler())
.loginPage("/login").permitAll();
UPDATE-2
我更新了我的结构,但仍然有从/ login重定向到自定义登录的问题.
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
super.addViewControllers(registry);
registry.addViewController("/savepassword").setViewName("savepassword.html");
registry.addViewController("/login").setViewName("login.html");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
我设置.html因为否则/ login会导致递归问题.使用此配置,我可以输入/ login并调用/templates/login.html(对于savepassword.html也是如此).
现在,我想知道如何在html中包含我的css / js:
这不起作用……但我可以用/scripts/login.js直接调用我的脚本.