OrchardCore Headless建站

说到CMS系统,可能大家都能想起 WordPressDrupal之类的框架,作为.NET爱好者,一般也是知道一些基于.NET的CMS框架的,典型的比如 DNNUmbraco之类的。我很早之前听过 Orchard,现在已经出了Core版本了,因此就直接在项目上用用。

前言

CMS系统(内容管理系统)可以方便我们快速建站,其他的概念我就不再多说了。重点说说三个重要的内容。

  • *Full CMS

全功能模式,基本上不需要开发干啥,网站的内容直接套上模板就可以建站了,自由度较低,上手及其简单。

  • *Decoupled CMS

解耦模式,除了后台还是使用CMS自带的后台以外,前台使用Razor Pages或者MVC进行页面调取后台的数据进行页面的呈现。前台和后台可以分开并行工作,只要在前后端定义好占位符和数据,网站就能正常使用。

  • *Headless CMS

极简模式(我也不知道咋翻译合理),和解耦模式一样,CMS只是发挥内容管理工作;不同的是,前端完全独立开发,使用CMS提供的各种API访问后台的数据,不需要符合各种模板,也完全前后端分离。

大家可以按照自己的需求找自己合适的模式。OrchardCore支持上面的所有三种模式。如果是前端比较独立的情况,可以选择使用Headless进行开发。

关于CMS的选型,除了这个以外,还有一个Piranha.CMS也极简风格,很快就上手了,有兴趣大家可以去研究。

OrchardCore部署

按照官方文档就可以进行部署了,提示一下大家,建议大家添加上他们自己自带的nuget源,要不很容易出现不好编译的情况。如果大家喜欢docker,他们还提供docker的镜像,默认的用户名是admin,密码是password,安装更加方便,不过少了很多可以直接定制的地方,大家自行选择。细节的内容我就不多说了,网上很多了。(本文使用Docker进行默认部署)

定义内容

进入了管理后台之后,首先进入Configuration-》features中添加需要的Content Management组件,然后在Content Definitions中定义内容类型,我新建了一种Article类型的内容。然后我添加了一个正文区域的Html Field,添加了几个Parts,如下图。请注意,在设置Fields的过程中,我手动设置了编辑器Trumbowyg,大家可以根据自己的需要选择。

OrchardCore Headless建站

配置完了就可以新建文章了,体验还是不错的,图片等资源可以使用Media Library进行管理,然后插入的时候,会提示你选择对应的文件,非常方便,然后写好了之后还可以预览。

OrchardCore Headless建站

使用GraphQL访问数据

OrchardCore没有使用WebApi,而是使用了GraphQL作为自己的对外API提供的方法。

有关GraphQL的使用,我之前写过一篇文章,他使用库不是HotChocolate,但是对外查询方式是一样的。

因此,前端需要使用 _GraphQL_替代 _REST API_访问后台的数据。默认GraphQL是不开通的,需要在后台中Configuration-》features中启用。启用后,可以发现在OrchardCore集成了GraphQL开发控制台(通过Configuration-》GraphQL打开)。

OrchardCore Headless建站
这里,已经可以发现我们新建的article类型了。并且可以直接通过GraphQL进行查询了。通过F12查看请求,可以发现编辑好的GraphQL请求是通过特定的格式发送给后台endpoint(/api/graphql)的,这篇文章详细解释了前台怎么向后台请求数据。

使用JWT保护接口

如果网站启用了OpenID,那么前端直接访问后台会弹401错误。我们可以使用 ASP.NET CORE Data Protection或者 JWT来进行认证和鉴权。

OrchardCore支持OpenID和OAuth2.0规范,可以通过 /.well-known/openid-configuration查看各个服务的终结点以及其他基本信息。这两个规范不是本文的重点,请自行查阅相关资料。

我们在Security-》OpenID Connect进行Authorization server的设置,启用必要的 endpoint和需要使用到的 Flow,最底下,Token Format选择 JWT。接下来,在Management-》Application中新建一个应用,就可以获取Token了。

OrchardCore Headless建站

上图是使用 Password Flow请求TOKEN需要发送的信息,POST过去,就可以获得token。接下来前端把这个access_token放在后续的请求头中,就能正常获得数据了。

OrchardCore Headless建站

结语

至此,网站编辑已经可以通过后台自己去编写文章了,还可以新建多种类别,包括菜单等等功能;前端也可以按照返回的数据使用自己熟悉的框架(VUE/REACT)构建WEB界面了。

Original: https://www.cnblogs.com/podolski/p/15847598.html
Author: 波多尔斯基
Title: OrchardCore Headless建站

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578067/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • ansible对文件内容操作

    bash;gutter:true; ansible lineinfile 简介 lineinfile该模块是操作文件中的每一行内容,他是按照行为单位的,和下面的replace模块并…

    Linux 2023年6月7日
    078
  • 高速USB转4串口产品设计-RS485串口

    基于480Mbps 高速USB转8路串口芯片CH344Q,可以为各类主机扩展出4个独立的串口。CH344芯片支持使用操作系统内置的CDC串口驱动,也支持使用厂商提供的VCP串口驱动…

    Linux 2023年6月7日
    0110
  • Redis的slot迁移工具

    工具下载: https://github.com/eyjian/redis-tools/blob/master/move_redis_slot.sh 支持迁移已有的keys。 #!…

    Linux 2023年5月28日
    0105
  • 大数据Hadoop集群的扩容及缩容(动态添加删除节点)

    添加白名单和黑名单 白名单,表示在白名单的主机IP地址可以用来存储数据 企业中;配置白名单,可以尽量防止黑客恶意访问攻击。 配置白名单步骤如下:原文:sw-code 1)在Name…

    Linux 2023年6月8日
    0131
  • 手把手教你在Linux系统下安装MongoDB

    1. 下载最新的stable版MongoDB [root@spirit-of-fire ~]# wget http://downloads.mongodb.org/linux/mo…

    Linux 2023年6月14日
    0136
  • 操作系统实战45讲 -04 业界成熟的内核架构长什么样

    Linux 系统性能稳定且开源。在很多公司企业网络中被当作服务器来使用,这是 Linux 的一大亮点,也是它得以壮大的关键。 上图中大致分为五大重要组件,每个组件又分成许多模块从上…

    Linux 2023年6月7日
    0122
  • 解决Conda改源后无法安装软件包的问题

    前言 有时候哪怕修改了 Conda 源也一直无法安装一个想要的软件包,亦或者找到了目标软件包,下载速度却很慢,速度感人,也可能直接 Conda 就找不到你想安装的软件包 此时有两种…

    Linux 2023年6月14日
    092
  • 【转】redis 消息队列发布订阅模式spring boot实现

    /*redis 消息处理器/ @Component public class MessageReceiver { /*接收消息的方法/ public void receiveMes…

    Linux 2023年5月28日
    099
  • 附032.Kubernetes实现蓝绿发布

    蓝绿发布原理 蓝绿发布本质上是希望能优雅无误的迭代应用,以便于使应用平稳提供服务。通常是不停老版本的同时对新版本进行先发布,然后确认无误后进行流量切换,即并行部署。Kubernet…

    Linux 2023年6月13日
    098
  • 随便侃侃博客挖坑的事

    很多都没有写博客了,说实在的,Markdown的语法都忘的差不多了。 今年看着停留在提醒上的写博客计划,然后又想了想要写的东西,太多了,都需要花点时间去总结,感觉静不下心来,真的无…

    Linux 2023年6月6日
    0103
  • PyTorch 介绍 | TRANSFORMS

    数据并不总是满足机器学习算法所需的格式。我们使用 transform对数据进行一些操作,使得其能适用于训练。 所有的TorchVision数据集都有两个参数,用以接受包含trans…

    Linux 2023年6月16日
    0144
  • springboot工程引用本地lib文件夾内的jar包,打包時把依賴jar包打入jar包

    本地工程新建lib文件夾,并放入jar包 springboot工程引用lib文件夹下的jar包 pom中增加 com.aliyun.vcs.dataengine common sy…

    Linux 2023年6月8日
    0105
  • 初识前后端

    初识前后端 在学习了解前后端的过程中,自己看到了这一篇好的文章,摘下了一些当下用的的内容,供复习参考。 什么是前端开发? 前端开发主要涉及网站和 App,用户能够从 App 屏幕或…

    Linux 2023年6月13日
    0114
  • Linux系统编程—信号捕捉

    前面我们学习了信号产生的几种方式,而对于信号的处理有如下几种方式: 默认处理方式; 忽略; 捕捉。 信号的捕捉,说白了就是抓到一个信号后,执行我们指定的函数,或者执行我们指定的动作…

    Linux 2023年6月14日
    0125
  • java 连接 redis

    Jedis 导入对应的依赖 redis.clients jedis 4.2.3 com.alibaba fastjson 1.2.79 连接数据库 记得在本地打开 redis //…

    Linux 2023年6月7日
    094
  • gitlab服务yum源安装详细步骤(centos7)

    gitlab服务yum源安装详细步骤(centos7) 概述 GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进…

    Linux 2023年6月8日
    095
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球