Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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 Boot_Java_Spring_Tomcat_Spring Boot - Fatal编程技术网

Java 具有容器安全性的Spring Boot

Java 具有容器安全性的Spring Boot,java,spring,tomcat,spring-boot,Java,Spring,Tomcat,Spring Boot,我最近在一些项目中使用SpringBoot,我非常喜欢它。对于一个新项目,我们希望使用tomcat-users.xml进行真正基本的身份验证,但如果没有web.xml文件,我想不出如何使用该机制。大多数使用SpringBoot的人似乎都在使用SpringSecurity 可以将tomcat容器安全性与spring boot java配置模型一起使用吗?我知道这打破了runnable jar范式,但我们计划无论如何都将其部署为一场战争。来自: WEB-INF/WEB.xml和WebApplicat

我最近在一些项目中使用SpringBoot,我非常喜欢它。对于一个新项目,我们希望使用tomcat-users.xml进行真正基本的身份验证,但如果没有web.xml文件,我想不出如何使用该机制。大多数使用SpringBoot的人似乎都在使用SpringSecurity

可以将tomcat容器安全性与spring boot java配置模型一起使用吗?我知道这打破了runnable jar范式,但我们计划无论如何都将其部署为一场战争。

来自:

WEB-INF/WEB.xml和WebApplicationInitializer的使用并不相互排斥;例如,web.xml可以注册一个servlet,而WebApplicationInitializer可以注册另一个servlet。初始值设定项甚至可以通过ServletContext.getServletRegistration(String)等方法修改在web.xml中执行的注册。但是,如果应用程序中存在WEB-INF/WEB.xml,则其版本属性必须设置为“3.0”或更高,否则servlet容器将忽略ServletContainerInitializer引导

因此,我用
WebApplicationInitializer
SpringBootServletInitializer
扩展
WebApplicationInitializer
)和
web.xml
解决了这个问题

Spring引导Java配置类:

 @SpringBootApplication
 public class MyApplication extends SpringBootServletInitializer {

     @Override
     protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
         return application.sources(MyApplication.class);
     }

     public static void main(String[] args) {
         SpringApplication.run(MyApplication.class, args);
     }

      //...
 }
web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
metadata-complete="false" version="3.0">

    <display-name>My Awesome Application</display-name>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>My Awesome Resource Name</web-resource-name>
            <url-pattern>/*</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
            <http-method>PUT</http-method>
            <http-method>DELETE</http-method>
        </web-resource-collection>
        <auth-constraint>
            <role-name>myawesomerole</role-name>
        </auth-constraint>
    </security-constraint>

    <login-config>
        <auth-method>BASIC</auth-method>
    </login-config>

</web-app>

我很棒的应用程序
我最棒的资源名
/*
得到
邮递
放
删除

看看哪里有一个以编程方式配置用户的示例。这是关于以编程方式设置用户的重要信息,但它不包括如何使用容器安全性保护url资源,这是我缺少的部分。