java web项目war包部署,使用tomcat对指定接口设置身份认证

先简单说一下需求:

将一个基于springboot2.0开发的java web项目打成war包,通过tomcat部署到一台linux服务器上,项目相关的一些图片等资源也按照一定规则放置在服务器构建好的目录下。现在需要让用户通过http网页链接的方式(在浏览器端)访问图片,为了访问安全,需要在中间加一层用户认证。认证过程希望尽量简单些,所以就尝试用tomcat自带的身份认证来做。

话不多说,直接上实现流程:

首先,由于要访问本地的静态资源,所以在springboot启动类中加了一项静态资源的映射,使用/image映射本地的/home/zxx/darknet/test目录:

public class FilemicroserviceApplication extends WebMvcConfigurationSupport {

    @Value("${BASEDIR}")
    String BASEDIR;  // 本地资源文件根目录

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

    /**
     * 静态资源映射器
     * @param registry
     */
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
         registry.addResourceHandler("/image/**").addResourceLocations("file:"+BASEDIR+"/");
    }

}

然后,将项目打成war包,我的war包名称为filemicroservice.war,部署到linux服务器tomcat上(即放置在tomcat的webapps目录下):

在tomcat的conf目录下需要配置两个文件:

tomcat-users.xml文件<tomcat-users></tomcat-users>中加上两条代码,设置访问认证的用户角色和该角色的用户账号和密码,此处,我设置了一个名为uav的角色,并且添加了一个账号为uav,密码为123456,角色为uav的用户:

 <role rolename="uav"/>
 <user username="uav" password="123456" roles="uav"/>

接下来在web.xml中设置身份认证,直接翻到文件最下面,在尾标签</web-app>上方加上这块代码:

<security-constraint>
  <web-resource-collection>
    <!--项目名称(即放置在webapps下的war包名称)-->
    <web-resource-name>filemicroservice</web-resource-name>
    <!--需要安全认证的接口-->
    <url-pattern>/filemicroservice/image/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <!-- 只允许uav角色的用户访问 -->
    <role-name>uav</role-name>
  </auth-constraint>
</security-constraint>
<login-config>
  <!--值可以是BASIC/DIGEST/CLIENT_CERT/FORM-->
  <auth-method>BASIC</auth-method>
  <!--认证提示信息-->
  <realm-name>请输入认证用户的账号密码</realm-name>
</login-config>
<security-role>
  <role-name>uav</role-name>
</security-role>

修改保存好上述两个文件后,到bin目录下,通过命令启动tomcat./startup.sh,然后去浏览器通过http访问服务器指定目录下的静态文件:

我在/image映射的目录下存放了一个文件夹,里面放有两张图片,现在,我们通过http去访问图片,浏览器会弹出一个身份认证的弹框:

然后我们输入在tomcat中设置的用户账号和密码,确认访问:

成功了。

原文地址:https://www.cnblogs.com/paopaolx/p/12050085.html

时间: 2024-10-09 17:24:18

java web项目war包部署,使用tomcat对指定接口设置身份认证的相关文章

将Web项目War包部署到Tomcat服务器基本步骤(完整版)

1. 常识: 1.1 War包 War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码. 当开发人员在自己的开发机器上调试所有代码并通过后,为了交给测试人员测试和未来进行产品发布,都需要将开发人员的源码打包成War进行发布. War包可以放在Tomcat下的webapps或者word目录下,随着tomcat服务器的启动,它可以自动被解压. 1.2 Tomcat服务器 Tomcat服务器是一个免费的开放源代码

将Web项目War包部署到Tomcat服务器基本步骤

参考来源: http://www.cnblogs.com/pannysp/archive/2012/03/07/2383364.html   1. 常识: 1.1 War包 War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码. 当开发人员在自己的开发机器上调试所有代码并通过后,为了交给测试人员测试和未来进行产品发布,都需要将开发人员的源码打包成War进行发布. War包可以放在Tomcat下的webap

Web项目打成war包部署到tomcat时报MySQL Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)错误解决方案

Web项目使用使用root账号root密码进行部署,通过Eclipse加载到Tomcat服务器可以发布成功,打成war包放到tomcat的webapps目录无法发布成功,报错: jdbc.properties涉及Mysql配置: 错误很明显,与MySQL密码有关,但是两种方式部署项目使用的jdbc.properties配置文件是一样的.所以肯定不是密码不对引起的,只好找度娘,O(∩_∩)O哈哈~. 网上大部分帖通过运行mysql -u root -p命令登录时也会报这个错误,所以,我就尝试这种方

SpringBoot之打成war包部署到Tomcat

正常情况下SpringBoot项目是以jar包的形式,正常情况下SpringBoot项目是以jar包的形式,并且SpringBoot是内嵌Tomcat服务器,所以每次重新启动都是用的新的Tomcat服务器.正因如此,也出现了一个问题:    上传到项目的文件,如果是保存在项目中的,那么重启过后文件就会丢失.比如我们上传了一个头像,重启项目后,这个头像就没了.而如果将文件保存在本地磁盘中的话,html中标签没办法获取(当然,企业项目中一般是有专门的图片服务器的).因此,我们才需要将SpringBo

Eclipse中的Web项目自己主动部署到Tomcat

一.原因. 1.写java程序有一段时间了,但非常久没用eclipse了.所以使用eclipse编写的web项目部署到tomcat 的方式也不是非常清楚,以下记录一下将Eclipse 上的web项目自己主动部署到tomcat 上的方式: 二.部署问题 1.这里就有个问题.是怎么把Eclipse中的站点项目自己主动部署到tomcat中. 在Eclipse中做的Web项目默认是不支持将项目公布到Webserver上的,会公布到工作空间的某个文件夹下,因此无法在外部启动Tomcat来执行Web项目,仅

使用IntelliJ IDEA和Maven构建Java web项目并打包部署

爱编程爱分享,原创文章,转载请注明出处,谢谢! http://www.cnblogs.com/fozero/p/6120375.html 一.背景 现在越来越多的人使用IntelliJ IDEA工具进行Java的开发,以前也对IntelliJ IDEA有了解过,但是一直没有去使用. IntelliJ IDEA比Myeclipse好用多了 ,功能也非常的强大,google公司Android Studio就是基于IntelliJ IDEA开发的, 开发效率非常高,各种智能提示等等,具体的大家可以去了

将web项目打成war包部署在tomcat步骤

1.将自己的项目打成war包. 2.将打包好的war复制到${tomcat.home}/webapps项目下. 3.在${tomcat.hom}/conf目录下打开server.xml文件,找到Host节点,在Host节点下添加: <Context docBase="D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\Products.war" path="/Products" relo

Eclipse中的Web项目自己主动部署到Tomcat以及怎样在Eclipse中使用My Eclipseproject

我是一个新手学习Java,servlet和Jsp. 痛苦的是我时候一个.net程序猿,习惯了微软的VS IDE一切都是封装好的.傻瓜式的使用, 不须要关心内部实现. 悲催的是我看到资料都是My Eclipse, 但我下载使用的环境是Eclipse.这就有两个问题要解决. 一个是怎样把My Eclipse的东西同步到Eclipse上, 另外一个是版本号控制问题.我的环境我认为比較奇葩(Tomca6.0.45+J2ee1.8.25). 在这个过程中遇到的问题较多,以下就找一个先突破吧. 怎样部署Se

Eclipse使用Maven搭建Java Web项目并直接部署Tomcat

1.环境: Windows 10 Java 1.8 Maven 3.3.9 Eclipse IDE for Java EE Developers 2.准备: eclipse环境什么的不赘述,Maven环境还是要的 先下载Maven,地址:http://maven.apache.org/download.cgi 直接点apache-maven-3.3.9-bin.zip下载,然后解压到随便什么目录 下好之后配置环境变量,在系统变量里新建: 变量名:M2_HOME 变量值:C:\Program Fi