我在前端使用彈簧引導和角度。有時我想直接從服務重定向。我們只使用.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