发表于: 2017-08-20 22:42:03

1 1183


今天完成的事情:准备小课堂,部署项目到线上。

今天先准备了一下小课堂,讲了一下RBAC权限管理,算是为之后讲shiro做铺垫,其中的基本知识,我在之前的日报中已经写过了,就不再贴了,扩充知识点说一下。


访问控制模型

访问控制的核心是授权策略。以授权策略来划分, 访问控制模型可分为: 传统的访问控制模型(DAC\MAC\ACL)、基于角色的访问控制(RBAC) 模型、基于任务和工作流的访问控制(TBAC) 模型、基于任务和角色的访问控制(T-RBAC) 模型等。


ACL介绍

       ACL全称Access Control List,在ACL中,包含用户(User)、资源(Resource)、资源操作(Operation)三个关键要素。通过将资源以及资源操作授权给用户而使用户获取对资源进行操作的权限,模型如下图所示:

                                                         acl.JPG

       ACL是最早也是最基本的一种访问控制机制,它的原理非常简单:每一项资源,都配有一个列表,这个列表记录的就是哪些用户可以对这项资源执行CRUD中的那些操作。当系统试图访问这项资源时,会首先检查这个列表中是否有关于当前用户的访问权限,从而确定当前用户可否执行相应的操作。总得来说,ACL是一种面向资源的访问控制模型,它的机制是围绕“资源”展开的。由于ACL的简单性,使得它几乎不需要任何基础设施就可以完成访问控制。但同时它的缺点也是很明显的,由于需要维护大量的访问权限列表,ACL在性能上有明显的缺陷。另外,对于拥有大量用户与众多资源的应用,管理访问控制列表本身就变成非常繁重的工作。

       


讲完小课堂,大扫除,完了准备部署我自己的项目到线上去做测试。开始打war包提示TEST目录中的test类报错,直接删了,重新打包,打包成功。之后部署。

war包上传到webapps目录下,自动解压,解压的目录下能找到jsp页面。

然而还是出现了404页面提示我找不到

然后想到pom文件,是不是pom文件中有错误,参照博文发现自己确实有误。

pring-boot-starter-web中包含内嵌的tomcat容器,所以直接部署在外部容器会冲突报错。

解决方案

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <exclusions>
     <exclusion>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <groupId>org.springframework.boot</groupId>
     </exclusion>
  </exclusions>
</dependency>

<!-- 使用Jasper引擎解析JSP -->
<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-jasper</artifactId>
  <scope>provided</scope>
</dependency>

在这里需要移除对嵌入式Tomcat的依赖,这样打出的war包中,在lib目录下才不会包含Tomcat相关的jar包,否则将会出现启动错误。还有一个很关键的关键点,就是tomcat-embed-jasper中scope必须是provided。

因为SpringBootServletInitializer需要依赖 javax.servlet,而tomcat-embed-jasper下面的tomcat-embed-core中就有这个javax.servlet,如果没用provided,最终打好的war里面会有servlet-api这个jar,这样就会跟tomcat本身的冲突了。

改完之后重新打包上传,检查,正常。

尝试进入登录页面

明天计划的事情:正好程凯明天来,解决这个BUG,进行线上测试。

遇到的问题:如上

收获:无。


返回列表 返回列表
评论

    分享到