我在前端使用弹簧引导和角度。有时我想直接从服务重定向。我们只使用.html,.css和脚本文件(不包括.jsp)。无法找到与弹簧启动的HTML页面
这是return "static/pages/savepassword.html";
我如何试图重定向到savepassword
所以第一个问题,我怎么在这种情况下,适当地重定向?
接下来,Spring没有找到我的html文件。我有这样的结构
,我读了春天应该会自动查找所有静态文件中的“静”,但事实并非如此。所以,我想配置我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);
}
当我称之为“静态/页/ login.html的”直接,它的作品。当我想打电话“/登录”它说404. 第二个问题:我需要什么配置,什么不是?
UPDATE-1:春季安全
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 我更新了我的结构,但仍然有问题,与/登录重定向到自定义登录。
UPDATE-3 我看了一下鲍勃·希尔兹第二评论:https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot 我做了以下内容:
@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并调用/templates/login.html(与savepassword.html相同)。
现在,我想知道如何在HTML中包括我的CSS/JS:
<link rel="stylesheet" type="text/css" href="..resources/stylesheets/bootstrap.min.css" />
<script src="..resources/scripts/angular.min.js"></script>
<script src="..resources/scripts/login.js"></script>
这不工作...但我卡恩直接/脚本/登录调用我的脚本.js文件。
你可以尝试使用/login.html吗? –
不,因为默认的Spring Security页面出现了。 Regulary,我们自定义的login.html(static/pages/login.html)应该显示出来。 我更新了我的答案,所以你可以看到弹簧安全配置。 我以为'ViewControllerRegistry'解析登录到静态/页面/登录,HTML,并将采取此登录页面 – Andy
我可能需要将静态文件夹放在src/main/ressource而不是放入webapp? – Andy