说到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,大家可以根据自己的需要选择。

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

使用GraphQL访问数据

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

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

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



这里,已经可以发现我们新建的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了。

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

结语

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

OrchardCore Headless建站的更多相关文章

  1. OrchardCore Headless建站拾遗

    书接上回,OrchardCore的基本设置写了,但是有一说一,这个东西还是挺复杂的,如果需要构建一个简单的企业网站,还需要干点别的活. 本文考虑在尽量少编程的基础上,完成一个Headless网站的设置 ...

  2. WordPress建站和搭独立博客

    之前有帮外面的公司建站的经历 不去管html css js 服务器脚本等 对于菜鸟新手而言, 一个WAMP + WordPress(博客程序)就够了 都弄好了再部署到云端服务器上 其实整个过程只是安装 ...

  3. WordPress建站 新手入门

    WordPress建站 新手入门教程系列 1. WordPress入门 之 什么是WordPress? 2. WordPress入门 之 搭建WordPress站点需要什么条件? 3. WordPre ...

  4. [web建站] 优课急送《零基础快速学习建站》视频+课件【价值399元】

    [课程介绍]你想快速建一个网站出来吗?你想从什么都不懂到一两天出一个漂漂亮亮的站吗?你想完成领导交给你的任务找人建站吗?你想自己建站来创业吗?你想学会建站之后,利用给别人建站来赚钱吗?你想建一个跟某个 ...

  5. 浅析 Magento网站建站空间的选择

    对 Magento稍有了解的人都知道,作为一个功能异常强大的网络商城程序,Magento的运行对主机空间的要求是非常高的:很多 Magento建站公司都会推荐 VPS 甚至独立服务器来运行 Magen ...

  6. 建站随手记:about server stack

    建站需要,随手记: Server Stack: ----------- 标准的mezzanine的Stack设置 前端:Nginx wsgi:gunicorn cms tool: mezzanine ...

  7. vps云服务器建站后绑定域名的方法?

    有很多的新手站长们,都不知道vps建站后该如何绑定自己的域名,这里就Windows系统的VPS主机利用iis绑定网站域名的方法,简要介绍一下. 通常情况下,我们在使用IIS建站的时候,都会有一步提示, ...

  8. 国庆送干货——前端建站实用UI工具vajoyJS

    差不多是从七月开始有空就写一写,写到现在也算是可以拿出来展示了,vajoyJS是一款可以提供多项建站常用UI功能的插件库,让你轻松创建简易幻灯片.模态窗口和单屏滚页等效果.vajoyJS依赖于 jQu ...

  9. Nodejs学习笔记(三)——一张图看懂Nodejs建站

    前言:一条线,竖着放,如果做不到精进至深,那就旋转90°,至少也图个幅度宽广. 通俗解释上面的胡言乱语:还没学会爬,就学起走了?! 继上篇<Nodejs学习笔记(二)——Eclipse中运行调试 ...

随机推荐

  1. MFC之实现无边窗口移动

    说明 演示环境: Vs2015 + MFC 基于对话框程序 效果图 方法1 注意: 此方法存在缺陷: 无法响应LButtonUp消息 添加消息处理函数 函数代码 void CMFCApplicatio ...

  2. Android 控件使用教程(三)—— NineGridImageView 九宫格展示图片

    引子 上文降到RecyclerView的使用,确实非常方便易用,而且样式多样,很灵活.但在图像展示时,经常有朋友圈和微博等9张图以内的图片展示需求,这时候,不是一个可以无限下滑的RecyclerVew ...

  3. 【LeetCode】665. 非递减数列 Non-decreasing Array(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 公众号:每日算法题 本文关键词:数组,array,非递减,遍历,python,C++ 目录 题目描述 题目大意 解题方法 一.错误代码 二.举例分析 ...

  4. Anti-prime Sequences

    Anti-prime Sequences Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 3355   Accepted: 1 ...

  5. [git]初始化项目文件到git分支

    将本地和远程仓库关联并push本地项目 1.VCS -> import into Version Control  ->  Create Git Repository 选择项目文件   2 ...

  6. 基于Spring MVC + Spring + MyBatis的【网上购物系统】

    资源下载:https://download.csdn.net/download/weixin_44893902/45601185 练习点设计:修改.删除 一.语言和环境 实现语言:JAVA语言. 环境 ...

  7. Ranger-AdminServer安装

    Ranger-AdminServer安装,对应的Ranger版本1.0.0. RangerAdmin安装依赖如下组件: mysql solr IP/机器名 安装软件 运行进程 zdh-245 Rang ...

  8. BUG—Nuget包版本不一致导致程序行为与预期不符

    注:本文收录于<Bug集锦>,请点击此处查看全文目录 BUG起因 先介绍一下背景: 数周前的一个极其平常的下午,完成了本次迭代的开发工作,发布到QA提测,然后开始摸鱼.没几分钟,测试就来找 ...

  9. SpringBoot 之 控制器层

    @Controller public class EmployeeController { @Autowired EmployeeDao employeeDao; @Autowired Departm ...

  10. web自动化,下拉滚动到底部/顶部和下拉滚动到指定的元素

    在web自动化,经常会遇到页面显示内容太多的时候,页面就会出现滚动条,一般有两种方式进行下拉,一种是直接下拉到底部/顶部/中部,或者直接给定元素,直接下拉到指定元素的位置. 两种方式的共同点: 两种方 ...