Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring security仅显示登录页面的标题_Java_Spring_Spring Boot_Spring Security_Thymeleaf - Fatal编程技术网

Java Spring security仅显示登录页面的标题

Java Spring security仅显示登录页面的标题,java,spring,spring-boot,spring-security,thymeleaf,Java,Spring,Spring Boot,Spring Security,Thymeleaf,我已经和这个摔跤一段时间了 我有一个web应用程序,我正试图将Spring安全性应用到其中。我已经成功地做到了这一点,当用户试图访问他们没有授权的页面时,它会将他们重定向到登录页面。问题是登录页面没有显示-只是显示登录页面的标题(并且没有样式化)。我对此感到非常困惑,因为所有其他页面都显示得很好。 我几乎是在不折不扣地遵循它,甚至下载了它,但我不太明白我在自己的项目中做了什么不同 我看到的唯一不同是我用的是Gradle,而这家伙用的是Maven 这是我的身材。格雷德尔: buildscript

我已经和这个摔跤一段时间了

我有一个web应用程序,我正试图将Spring安全性应用到其中。我已经成功地做到了这一点,当用户试图访问他们没有授权的页面时,它会将他们重定向到登录页面。问题是登录页面没有显示-只是显示登录页面的标题(并且没有样式化)。我对此感到非常困惑,因为所有其他页面都显示得很好。

我几乎是在不折不扣地遵循它,甚至下载了它,但我不太明白我在自己的项目中做了什么不同

我看到的唯一不同是我用的是Gradle,而这家伙用的是Maven

这是我的身材。格雷德尔:

buildscript{
存储库{
mavenCentral()
}
依赖关系{
类路径(“org.springframework.boot:springbootgradle插件:1.5.7.RELEASE”)
}
}
应用插件:“java”
应用插件:“eclipse”
应用插件:“创意”
应用插件:“org.springframework.boot”
罐子{
baseName='gs spring boot'
baseName='gs处理表单提交'
baseName='gs服务移动web内容'
baseName='gs访问数据mongodb'
baseName='gs rest服务cors'
baseName='gs安全web'
版本='0.1.0'
}
存储库{
mavenCentral()
}
sourceCompatibility=1.8
targetCompatibility=1.8
依赖关系{
编译(“org.springframework.boot:springbootstarterweb”){
排除模块:“弹簧引导启动器tomcat”
}
编译(“org.springframework.boot:springbootstarterjetty”)
testCompile(“org.springframework.boot:springbootstarter测试”)
编译(“org.springframework.boot:springbootstarteractivator”)
testCompile'junit:junit:4.12'
编译(“org.springframework.boot:springbootstarterdatamongodb”)
编译组:“joda time”,名称:“joda time”,版本:“2.8.1”
编译(“org.springframework.boot:springbootstarterweb:1.3.0.RELEASE”)
编译“org.slf4j:slf4j api:1.7.13”
编译(“org.springframework.boot:springbootstarterweb”)
编译(“org.springframework.boot:springboot父级:1.5.3.RELEASE”)
编译(“org.springframework.boot:springbootstartermyleaf”)
编译(“org.springframework.boot:springbootstarterdatamongodb”)
编译(“org.springframework.boot:springbootstartermobile”)
编译(“org.springframework.boot:springbootstarterdatajpa”)
编译(“com.h2数据库:h2”)
编译(“net.sourceforge.nekohtml:nekohtml:1.9.21”)
编译(“org.springframework.boot:springbootstarterdatamongodb:1.2.0.RELEASE”)
编译(“org.springframework.boot.springbootstarterremoteshell:1.2.0.RELEASE”)
编译(“org.thymeleaf.extras:thymeleaf-extras-springsecurity4”)
编译(“org.springframework.boot:springboot devtools:true”)
testCompile(“org.springframework.security:spring安全测试”)
编译(“org.springframework.boot:springbootstartersecurity”)

}
如果没有可运行的示例(我可以克隆一个git存储库就好了),很难进行调试,但我看到的一点是,您的安全配置需要身份验证才能访问样式表

您的安全配置和样式表应该加载

此外,您可能应该在标题中使用样式表的绝对路径,因为.././css/main.css可能不适用于所有URL


调试这些东西的一个好方法是使用浏览器中的web控制台,查看网络请求,并查看是否所有资产都已正确加载。

您确定您的登录页显示不正确吗?我相信您可能将未经正确验证的请求重定向到错误的页面。当处理MyAccessDeniedHandler类中被拒绝的请求时,执行以下操作:

httpServletResponse.sendRedirect(httpServletRequest.getContextPath() + "/403");
这由WebController类依次处理,代码如下:

@GetMapping("/403")
public String error403() {
    return "/error/403";
}
因此,当您处理403时,似乎实际上并没有呈现登录页面


我不熟悉百里香叶,但我猜您还没有定义error/403文件,即使在呈现页面时没有找到html文件,也会呈现一个标题

对于初学者来说,停止混合所有这些不同的Spring Boot版本。。。1.5.7、1.5.3、1.3.0、1.2.0,更不用说重复的依赖项和不匹配的版本。我也没有得到你的自定义访问拒绝处理程序,你不需要它(你只是让事情变得更复杂)。
@GetMapping("/403")
public String error403() {
    return "/error/403";
}