展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Java中Apache Shiro安全框架怎么用

Java中Apache Shiro安全框架怎么用

一、Shiro简介:ApacheShiro是一个Java的安全(权限)框架。Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以完成,认证,授权,加密,会话管理,Web集成,缓存等。shiro功能:Authentication:身份认证、登录,验证用户是不是拥有相应的身份;Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限,即判断用户能否进行什么操作,如:验证某个用户是否拥有某个角色,或者细粒度的验证某个用户

本文目录

      一、Shiro简介:

      Apache Shiro是一个Java的安全(权限)框架。
      Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以完成,认证,授权,加密,会话管理,Web集成,缓存等。

      Java中Apache Shiro安全框架怎么用

      shiro功能:

      Java中Apache Shiro安全框架怎么用

      Authentication:身份认证、登录,验证用户是不是拥有相应的身份;
      Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限,即判断用户能否进行什么操作,如:验证某个用户是否拥有某个角色,或者细粒度的验证某个用户对某个资源是否具有某个权限!
      Session Manager:会话管理,即用户登录后就是第一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通的JavaSE环境,也可以是Web环境;
      Cryptography:加密,保护数据的安全性,如密码加密存储到数据库中,而不是明文存储;Web Support: Web支持,可以非常容易的集成到Web环境;
      Caching:缓存,比如用户登录后,其用户信息,拥有的角色、权限不必每次去查,这样可以提高效率
      Concurrency: Shiro支持多线程应用的并发验证,即,如在一个线程中开启另一个线程,能把权限自动的传播过去
      Testing:提供测试支持;
      Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
      Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了

      Shiro架构(外部)

      从外部来看Shiro,即从应用程序角度来观察如何使用shiro完成工作:

      Java中Apache Shiro安全框架怎么用

      subject:应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subject,Subject代表了当前的用户,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等,与Subject的所有交互都会委托给SecurityManager; Subject其实是一个门面,SecurityManageer才是实际的执行者
      SecurityManager: 安全管理器,即所有与安全有关的操作都会与SercurityManager交互,并且它管理着所有的Subject,可以看出它是Shiro的核心,它负责与Shiro的其他组件进行交互,它相当于SpringMVC的
      DispatcherServlet的角色
      Realm: Shiro从Realm获取安全数据((如用户,角色,权限),就是说SecurityManager要验证用户身份,那么它需要从Realm 获取相应的用户进行比较,来确定用户的身份是否合法;也需要从Realm得到用户相应的角色、权限,进行验证用户的操作是否能够进行,可以把Realm看成DataSource;

      Shiro架构(内部)

      Java中Apache Shiro安全框架怎么用

      subject:任何可以与应用交互的'用户';
      Security Manager:相当于SpringMVC中的DispatcherServlet;是Shiro的心脏,所有具体的交互都通过Security Manager进行控制,它管理者所有的Subject,且负责进行认证,授权,会话,及缓存的管理.

      Authenticator:负责Subject认证,是一个扩展点,可以自定义实现;可以使用认证策略(AuthenticationStrategy),即什么情况下算用户认证通过了;
      Authorizer: 授权器,即访问控制器,用来决定主体是否有权限进行相应的操作;即控制着用户能访问应用中的那些功能;
      Realm:可以有一个或者多个的realm,可以认为是安全实体数据源,即用于获取安全实体的,可以用DBC实现,也可以是内存实现等等,由用户提供;所以一般在应用中都需要实现自己的realm
      SessionManager: 管理Session生命周期的组件,而Shiro并不仅仅可以用在Web环境,也可以用在普通的JavaSE环境中
      CacheManager:缓存控制器,来管理如用户,角色,权限等缓存的;因为这些数据基本上很少以受,成到缓存中后可以提高访问的性能;
      Cryptography:密码模块,Shiro提高了一些常见的加密组件用于密码加密,解密等

      二、快速入门

      1.拷贝案例

      1.按照官网提示找到 快速入门案例 GitHub地址:shiro/samples/quickstart/

      Java中Apache Shiro安全框架怎么用

      2.新建一个 Maven 工程,删除其 src 目录,将其作为父工程

      3.在父工程中新建一个 Maven 模块

      4.复制快速入门案例 POM.xml 文件中的依赖

      
              
                  org.apache.shiro
                  shiro-core
                  1.4.1
              
       
              
              
                  org.slf4j
                  jcl-over-slf4j
                  1.7.29
              
              
                  org.slf4j
                  slf4j-log4j12
                  1.7.29
              
              
                  log4j
                  log4j
                  1.2.17
              
          

      5.把快速入门案例中的 resource 下的log4j.properties复制下来

      6.复制一下shiro.ini文件

      7.复制一下Quickstart.java文件

      8.运行启动Quickstart.java

      Java中Apache Shiro安全框架怎么用

      2.分析代码

      public class Quickstart {
          private static final transient Logger log = LoggerFactory.getLogger(Quickstart.class);
          public static void main(String[] args) {
              //工厂模式,通过shiro.ini配置文件中的信息,生成一个工厂实例
              Factory factory = new IniSecurityManagerFactory("classpath:shiro.ini");
              SecurityManager securityManager = factory.getInstance();
              SecurityUtils.setSecurityManager(securityManager);
              //获取当前的用户对象Subject
              Subject currentUser = SecurityUtils.getSubject();
              //通过当前用户拿到session
              Session session = currentUser.getSession();
              session.setAttribute("someKey", "aValue");
              String value = (String) session.getAttribute("someKey");
              if (value.equals("aValue")) {
                  log.info("Subject=>session[" + value + "]");
              }
              //判断当前的用户是否被认证
              if (!currentUser.isAuthenticated()) {
                  //Token :令牌,没有获取,随机
                  UsernamePasswordToken token = new UsernamePasswordToken("lonestarr", "vespa");
                  token.setRememberMe(true);  //设置记住我
                  try {
                      currentUser.login(token); //执行了登录操作
                  } catch (UnknownAccountException uae) {
                      //如果   用户名不存在
                      log.info("There is no user with username of " + token.getPrincipal());
                  } catch (IncorrectCredentialsException ice) {
                      //如果   密码不正确
                      log.info("Password for account " + token.getPrincipal() + " was incorrect!");
                  } catch (LockedAccountException lae) {
                      //用户被锁定,如密码输出过多,则被锁定
                      log.info("The account for username " + token.getPrincipal() + " is locked.  " +
                              "Please contact your administrator to unlock it.");
                  }
                  //...在此处捕获更多异常
                  catch (AuthenticationException ae) {
                      //意外情况 ? 错误 ?
                  }
              }
              //打印其标识主体(在这种情况下,为用户名)
              log.info("User [" + currentUser.getPrincipal() + "] logged in successfully.");
       
              //测试角色是否存在
              if (currentUser.hasRole("schwartz")) {
                  log.info("May the Schwartz be with you!");
              } else {
                  log.info("Hello, mere mortal.");
              }
              //粗粒度,极限范围小
              //测试类型化的极限(不是实例级别)
              if (currentUser.isPermitted("lightsaber:wield")) {
                  log.info("You may use a lightsaber ring.  Use it wisely.");
              } else {
                  log.info("Sorry, lightsaber rings are for schwartz masters only.");
              }
              //细粒度,极限范围广
              //实例级别的权限(非常强大)
              if (currentUser.isPermitted("winnebago:drive:eagle5")) {
                  log.info("You are permitted to 'drive' the winnebago with license plate (id) 'eagle5'.  " +
                          "Here are the keys - have fun!");
              } else {
                  log.info("Sorry, you aren't allowed to drive the 'eagle5' winnebago!");
              }
              //注销
              currentUser.logout();
              //退出
              System.exit(0);
          }
      }

      三、SpringBoot 集成 Shiro

      1.编写测试环境

      1.在刚刚的父项目中新建一个 springboot 模块

      Java中Apache Shiro安全框架怎么用

      2.导入 SpringBoot 和 Shiro 整合包的依赖

       
              
                  org.apache.shiro
                  shiro-spring
                  1.4.1
              

      下面是编写配置文件
      Shiro 三大要素

      Subject 用户 -> ShiroFilterFactoryBean
      SecurityManager 管理所有用户 -> DefaultWebSecurityManager
      Realm 连接数据

      实际操作中对象创建的顺序 : realm -> securityManager -> subject

      3.编写自定义的 realm ,需要继承 AuthorizingRealm

      //自定义的 UserRealm        extends AuthorizingRealm
      public class UserRealm extends AuthorizingRealm {
          //授权
          @Override
          protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
              //打印一个提示
              System.out.println("执行了授权方法");
              return null;
          }
       
          //认证
          @Override
          protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
              //打印一个提示
              System.out.println("执行了认证方法");
              return null;
          }
      }

      4.新建一个ShiroConfig配置文件

      @Configuration
      public class ShiroConfig {
       
          //ShiroFilterFactoryBean:3
          @Bean
          public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager defaultWebsecurityManager){
              ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
              //设置安全管理器
              bean.setSecurityManager(defaultWebsecurityManager);
              return bean;
          }
          //DefaultWebSecurityManager:2
          @Bean(name="securityManager")
          public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm){
              DefaultWebSecurityManager securityManager=new DefaultWebSecurityManager();
              //关闭UserRealm
              securityManager.setRealm(userRealm);
              return securityManager;
          }
          //创建realm 对象,需要自定义类:1
          @Bean(name="userRealm")
          public UserRealm userRealm(){
              return new UserRealm();
          }
      }

      5.测试成功!

      Java中Apache Shiro安全框架怎么用

      2.使用

      1.登录拦截

      在getShiroFilterFactoryBean方法中添加需要拦截的登录请求

      @Configuration
      public class ShiroConfig {
       
          //ShiroFilterFactoryBean:3
          @Bean
          public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager defaultWebsecurityManager){
              ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
              //设置安全管理器
              bean.setSecurityManager(defaultWebsecurityManager);
              //添加shiro的内置过滤器
              /*
                  anon : 无需认证,就可以访问
                  authc : 必须认证了才能访问
                  user : 必须拥有 “记住我” 功能才能用
                  perms : 拥有对某个资源的权限才能访问
                  role : 拥有某个角色权限才能访问
               */
       
              filterMap.put("/user/add","authc");
              filterMap.put("/user/update","authc");
              //拦截
              Map filterMap=new LinkedHashMap<>();
              filterMap.put("/user/*","authc");
              bean.setFilterChainDefinitionMap(filterMap);
       
      //        //设置登录的请求
      //        bean.setLoginUrl("/toLogin");
              return bean;
          }

      测试:点击 add链接,不会跳到 add 页面,而是跳到登录页,拦截成功

      Java中Apache Shiro安全框架怎么用

      2.用户认证

      1.在Controller层写一个登录的方法

      //登录的方法
          @RequestMapping("/login")
          public String login(String username, String password, Model model) {
              //获取当前用户
              Subject subject = SecurityUtils.getSubject();
              //封装用户的登录数据,获得令牌
              UsernamePasswordToken token = new UsernamePasswordToken(username, password);
              //登录 及 异常处理
              try {
                  //执行用户登录的方法,如果没有异常就说明OK了
                  subject.login(token);
                  return "index";
              } catch (UnknownAccountException e) {
                  //如果用户名不存在
                  System.out.println("用户名不存在");
                  model.addAttribute("msg", "用户名错误");
                  return "login";
              } catch (IncorrectCredentialsException ice) {
                  //如果密码错误
                  System.out.println("密码错误");
                  model.addAttribute("msg", "密码错误");
                  return "login";
              }
          }
      }

      2.测试

      Java中Apache Shiro安全框架怎么用

      可以看出是先执行了自定义的UserRealm中的AuthenticationInfo方法,再执行登录相关的操作

      3.修改UserRealm中的doGetAuthenticationInfo方法

      //认证
          @Override
          protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
              //打印一个提示
              System.out.println("执行了认证方法");
              // 用户名密码
              String name = "root";
              String password = "123456";
              //通过参数获取登录的控制器中生成的 令牌
              UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
              //用户名认证
              if (!token.getUsername().equals(name)){
                  // return null UnKnownAccountException
                  return null;
              }
              //密码认证, Shiro 自己做,为了避免和密码的接触
              //最后返回一个 AuthenticationInfo 接口的实现类,这里选择 SimpleAuthenticationInfo
              // 三个参数:获取当前用户的认证 ; 密码 ; 认证名
              return new SimpleAuthenticationInfo("", password, "");
          }
      }

      4.测试,输入错误的密码

      Java中Apache Shiro安全框架怎么用

      Java中Apache Shiro安全框架怎么用

      输入正确的密码,即可登录成功

      四、Shiro整合Mybatis

      1.导入依赖

      
                  mysql
                  mysql-connector-java
                  8.0.19
              
       
              
                  log4j
                  log4j
                  1.2.17
              
       
              
                  com.alibaba
                  druid
                  1.1.12
              
             
                  org.mybatis.spring.boot
                  mybatis-spring-boot-starter
                  2.1.1
              

      2.新建个application.yml

      spring:
        datasource:
          username: root
          password: 123456
          url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
          driver-class-name: com.mysql.cj.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource
       
          #Spring Boot 默认是不注入这些属性值的,需要自己绑定
          #druid 数据源专有配置
          initialSize: 5
          minIdle: 5
          maxActive: 20
          maxWait: 60000
          timeBetweenEvictionRunsMillis: 60000
          minEvictableIdleTimeMillis: 300000
          validationQuery: SELECT 1 FROM DUAL
          testWhileIdle: true
          testOnBorrow: false
          testOnReturn: false
          poolPreparedStatements: true
       
          #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
          #如果允许时报错  java.lang.ClassNotFoundException: org.apache.log4j.Priority
          #则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j
          filters: stat,wall,log4j
          maxPoolPreparedStatementPerConnectionSize: 20
          useGlobalDataSourceStat: true
          connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
      mybatis:
        type-aliases-package: com.huang.pojo
        mapper-locations: classpath:mybatis/mapper/*.xml

      3.在application.properties

      mybatis.type-aliases-package=com.longdi.pojo
      mybatis.mapper-locations=classpath:mapper/*.xml

      4.导入依赖

      
                  org.projectlombok
                  lombok
                  1.18.10
                  provided
              

      5.编写User类

      @Data
      @AllArgsConstructor
      @NoArgsConstructor
      public class User {
              private int id;
              private String name;
              private String pwd;
              private String perms;
      }

      6.编写UserMapper

      @Repository
      @Mapper
      public interface UserMapper {
          public User  queryUserByName(String name);
       
      }

      7.编写UserMapper.xml

      
      
       
      
       
          
              select * from mybatis.user where name=#{name}
          
       
      

      8.Service层

      UserService接口:

      public interface UserService {
          public User queryUserByName(String name);
      }

      9.编写接口实现类UserServiceImpl

      @Service
      public class UserServiceImpl implements UserService{
       
          @Autowired
          UserMapper userMapper;
       
          @Override
          public User queryUserByName(String name) {
              return userMapper.queryUserByName(name);
          }
      }

      10.在ShiroSpringbootApplicationTests测试

      @SpringBootTest
      class ShiroSpringbootApplicationTests {
          @Autowired
          UserServiceImpl userService;
          @Test
          void contextLoads() {
              System.out.println(userService.queryUserByName("longdi"));
          }
      }

      11.成功连接数据库

      五、实现请求授权

      1.在ShiroConfig类中修改

      Java中Apache Shiro安全框架怎么用

      2.controller跳转

      Java中Apache Shiro安全框架怎么用

      3.登录拦截授权,测试成功

      Java中Apache Shiro安全框架怎么用

      Java中Apache Shiro安全框架怎么用

      4.编写授权doGetAuthorizationInfo方法

      Java中Apache Shiro安全框架怎么用

      5.请求授权测试成功

      六、Shiro整合Thymeleaf

      1.导入依赖

      
              
                  com.github.theborakompanioni
                  thymeleaf-extras-shiro
                  2.0.0
              

      2.整合ShiroDialect

      Java中Apache Shiro安全框架怎么用

      3.index.html

      Java中Apache Shiro安全框架怎么用

      4.测试

      Java中Apache Shiro安全框架怎么用

      5.在认证里放session

      Java中Apache Shiro安全框架怎么用

      6.修改index.html

      Java中Apache Shiro安全框架怎么用

      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
      作者最新文章
      编程开发 Java apache
      相关文章 更多
      精品专题 更多
      装机必备

      正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

      Windows

      正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

      PDF教程

      正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

      macOS软件

      正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

      IOS软件

      正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

      AI

      正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

      Mac软件 更多
      Adobe Acrobat Pro macOS版
      Adobe Acrobat Pro macOS版

      Adobe Acrobat Pro 是面向办公、法务、财务、教育及出版用户的专业PDF处理软件,可在Mac上创建、编辑、转换、合并和保护文档,并提供OCR文字识别、表单、批注、内容比较、敏感信息遮盖及电子签名功能。

      Blender
      Blender

      Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

      Shapr3D macOS版
      Shapr3D macOS版

      Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。

      Adobe Illustrator macOS版
      Adobe Illustrator macOS版

      Adobe Illustrator 是 Adobe 推出的专业矢量图形设计软件,适合在 Mac 上制作标志、图标、插画、包装、信息图及印刷版面。它以路径和锚点构建可无损缩放的图形,并提供钢笔、形状、文字、图像描摹、渐变、画板及生成式功能。

      Adobe InDesign macOS版
      Adobe InDesign macOS版

      Adobe InDesign 是面向印刷品与数字出版物的专业版面设计软件,可在 Mac 上制作书籍、杂志、宣传册、海报、报告及交互式文档。它提供精细的文字样式、网格、母版、长文档管理和印前输出能力。

      Affinity Designer macOS版
      Affinity Designer macOS版

      Affinity Designer 的矢量设计能力现已整合进 Affinity by Canva,可在 Mac 上进行标志、图标、插画、界面原型及印刷品设计。个人用户使用免费 Canva 账户即可使用完整的矢量、像素和版面工具。

      Archicad macOS版
      Archicad macOS版

      Archicad是Graphisoft推出的建筑信息模型设计软件,可在Mac上完成概念设计、参数化建模、图纸编制、工程量统计、渲染展示及团队协同。模型与平立剖面、明细表和布局保持关联,适合建筑师、室内设计师、BIM团队及相关专业学生使用。

      AutoCAD LT macOS版
      AutoCAD LT macOS版

      AutoCAD LT是Autodesk推出的专业二维CAD设计与文档编制软件,Mac版本提供原生界面、多点触控及分屏查看体验。用户可精确创建和编辑DWG图形,完成图层管理、尺寸标注、表格、PDF参考、外部参照及打印输出。

      AutoCAD macOS版
      AutoCAD macOS版

      AutoCAD for Mac 是 Autodesk 面向 macOS 提供的专业计算机辅助设计软件,支持精确的二维绘图、标注、布局输出以及实体、曲面和网格建模。软件采用适配 Mac 操作习惯的界面,可处理 DWG 图纸。

      Autodesk Fusion macOS版
      Autodesk Fusion macOS版

      Autodesk Fusion 是面向产品设计与制造的一体化云连接平台,在 Mac 上提供参数化建模、自由曲面、装配、工程图、仿真、PCB 设计和 CAM 加工等工具。它适合机械工程师、工业设计师、创客及制造团队使用。

      Autodesk Maya macOS版
      Autodesk Maya macOS版

      Autodesk Maya是一套面向影视动画、游戏开发和视觉特效制作的专业三维创作软件,集多边形与曲面建模、角色绑定、关键帧动画、动力学模拟、程序化特效及Arnold渲染于一体,并提供脚本、插件和开放式制作管线支持。

      Blender macOS版
      Blender macOS版

      Blender是一款免费开源的综合三维创作软件,可在Mac上完成建模、数字雕刻、材质制作、角色绑定、动画、物理模拟、渲染、合成及视频剪辑。软件提供Cycles与Eevee渲染工具,并支持几何节点、蜡笔绘制和Python扩展。

      WINDOWS 更多
      AutoCAD Windows版
      AutoCAD Windows版

      AutoCAD 是 Autodesk 推出的专业计算机辅助设计软件,Windows 版支持精确二维绘图、三维实体与曲面建模、图纸标注、布局发布和任务自动化,并包含多套行业专业化工具组合,适用于建筑、机械、电气、工程建设及制造设计人员。

      Adobe Acrobat Pro Windows版
      Adobe Acrobat Pro Windows版

      Adobe Acrobat Pro 是面向专业 PDF 工作的综合解决方案,可在 Windows 中创建、编辑、转换、比较、整理和保护文档,并支持表单、电子签名、扫描件文字识别及敏感信息永久遮盖。订阅还包含网页、移动服务和云端协作能力,

      Blender
      Blender

      Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

      3dmax(3ds max)
      3dmax(3ds max)

      Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

      Adobe InDesign Windows版
      Adobe InDesign Windows版

      Adobe InDesign 是面向印刷与数字出版的专业页面排版工具,可制作书籍、杂志、宣传册、海报、交互式 PDF 和电子书。它提供精细的文字样式、多页面管理、印前检查及多格式输出能力,并能与 Photoshop、Illustrator

      Adobe Illustrator Windows版
      Adobe Illustrator Windows版

      Adobe Illustrator 是用于绘制矢量图形、插画、图标、徽标和版式的专业设计工具。它以路径和锚点为核心,作品放大后仍能保持清晰,并提供画板、文字、渐变、图像描摹及精确变换等功能,适合品牌视觉、印刷物料、数字界面和商业插画创作。

      Figma Windows版
      Figma Windows版

      Figma 是面向产品设计与开发团队的云端协作平台,可在 Windows 桌面客户端中完成界面绘制、组件管理、交互原型、评论评审和开发交付。文件保存在云端,多名成员能够同步编辑并共享设计系统;官方同时提供免费 Starter 方案及按席位计

      Affinity Designer Windows版
      Affinity Designer Windows版

      Affinity Designer 是面向矢量图形、数字插画和界面设计的专业创作工具,可在矢量、像素与导出工作区之间快速切换。它提供曲线编辑、形状构建、画板、排版、图层和专业色彩管理,并支持常见设计文件的导入及多种印刷、网页格式输出。

      Cinema 4D Windows版
      Cinema 4D Windows版

      Cinema 4D是Maxon推出的专业三维创作软件,将建模、动画、MoGraph动态图形、粒子与动力学模拟、材质灯光及Redshift渲染整合在统一工作环境中,适用于广告包装、影视特效、产品和建筑可视化、游戏素材等制作场景。

      Blender Windows版
      Blender Windows版

      Blender 是免费开源的三维创作套件,在 Windows 上提供建模、雕刻、材质、动画、物理模拟、合成、跟踪、视频剪辑及 Cycles、EEVEE 渲染工具。它适合个人创作者、学生和小型工作室,

      Autodesk Maya Windows版
      Autodesk Maya Windows版

      Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

      SketchUp Pro Windows版
      SketchUp Pro Windows版

      SketchUp Pro 是面向建筑、室内、景观、施工和产品设计等专业场景的三维建模工具,提供桌面建模、LayOut 二维文档、模型资源库、扩展程序及云端协作能力。其操作逻辑直观,适合从概念推敲、空间规划到图纸表达和方案汇报的完整工作流程。