😃 A simple and practical CMS implemented by ASP.NET Core
本项目是完全出于个人喜爱,看到Lin-cms有了python,node.js,社区也有人出了lin-cms-tp5的版本
本项目是 Lin CMS 后端的 ASP.NET Core 的实现,通过Vue.js实现的前后端分离CMS平台,目前实现简约的权限管理系统、基础字典项管理、随笔专栏,评论点赞,消息通知,标签等仿掘金模块。
Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率, 需要前端?请访问前端仓库。
- 后端接口Gitee 链接 https://gitee.com/igeekfan/lin-cms-dotnetcore
- 后端接口GitHub 链接 https://github.com/luoyunchong/lin-cms-dotnetcore
- 适配管理端UI https://github.com/luoyunchong/lin-cms-vue
- 适配用户端UI https://github.com/luoyunchong/lin-cms-vvlog
- 本项目swagger地址 https://api.igeekfan.cn/swagger/index.html
- 用户端 lin-cms-vvlog https://vvlog.igeekfan.cn
- 普通用户:710277267@qq.com
- 密码:123qwe
- 管理员 lin-cms-vue https://cms.igeekfan.cn/
- 管理员: admin
- 密码:123qwe
- 在原开源项目中增加了博客随笔、标签、随笔评论、关注用户、关注标签、技术频道(标签分类)、插件式功能(目前还没有) ,具体特点查看如下lin-cms-dotnetcore功能模块的设计,开源地址见下方。
Lin CMS 的构筑思想是有其自身特点的。下面我们阐述一些 Lin 的主要特点。
这意味着,Lin 既提供后台的支撑,也有一套对应的前端系统,
首先,传统的网站开发更多的是采用服务端渲染的方式,需用使用一种模板语言在服务端完成页面渲染:比如 Razor等模板技术。
服务端渲染的好处在于可以比较好的支持 SEO,但作为内部使用的 CMS 管理系统,SEO 并不重要。
但一个不可忽视的事实是,服务器渲染的页面到底是由前端开发者来完成,还是由服务器开发者来完成?其实都不太合适。现在已经没有多少前端开发者是了解这些服务端模板语言的,而服务器开发者本身是不太擅长开发页面的。那还是分开吧,前端用最熟悉的 Vue 写 JS 和 CSS,而服务器只关注自己的 API 即可。
其次,单页面应用程序的体验本身就要好于传统网站。
Lin 已经内置了 CMS 中最为常见的需求:用户管理、权限管理、日志系统等。开发者只需要集中精力开发自己的 CMS 业务即可
更多关于Lin CMS的介绍请访问Lin CMS线上文档
生产环境在 appsettings.Production.json 中配置 Authentication:JwtBearer:SecurityKey,或通过受保护的环境变量/密钥管理服务配置 Authentication__JwtBearer__SecurityKey。
每个部署使用独立的加密随机密钥(至少 64 个字符),不要提交到 Git。开发和测试环境未配置时,应用会生成随机密钥并回写运行目录的 appsettings.json;生产环境回写 appsettings.Production.json,后续启动会复用该配置;长度不足或仍使用仓库旧默认值时,应用会拒绝启动。
PowerShell 可生成密钥并设置当前进程环境变量:
$jwtKeyBytes = New-Object byte[] 64
[System.Security.Cryptography.RandomNumberGenerator]::Fill($jwtKeyBytes)
$env:Authentication__JwtBearer__SecurityKey = [Convert]::ToBase64String($jwtKeyBytes)部署时应将生成值持久保存在 appsettings.Production.json 或密钥管理服务中,所有同一部署的实例使用同一密钥;不要每次重启重新生成。若配置文件受 Git 管理,请将本地生成后的改动还原或加入部署忽略规则,避免把密钥提交到仓库。
使用 run.sh 时可从受保护的部署环境提供 JWT_SIGNING_KEY,脚本会传入容器;省略时应用会使用挂载的 appsettings.Production.json,若仍缺少配置则写入本地密钥文件。
已使用公开默认密钥的部署必须更换密钥并重启所有实例,旧访问令牌会失效,用户需重新登录。
JWT 验证还会检查用户当前状态,并从数据库加载当前角色和分组,已禁用或删除的账号无法继续使用旧令牌。
由于 Lin 采用的是前后端分离的架构,所以你至少需要熟悉 C# 和 Vue。
该项目的Lin 的服务端框架是基于.NET构建的,所以如果你比较熟悉Mvc、WebAPI、过滤器等概念,或者是 有.NET Framework中Mvc开发经验,相信你一定很容易写出代码。
- 数据库相关:ORM:FreeSql+DataBase:MySQL5.6/MsSqlServer/Oracle/Sqlite/PostgreSQL
- ASP.NET Core + WebAPI + RESTful
- 简化对象映射:AutoMapper
- Json Web令牌:JWT
- 文档API:Swagger(Swashbuckle.AspNetCore)
- 序列化:Newtonsoft.Json
- 测试框架:Xunit
- 日志 Serilog
- 依赖注入服务AutoFac
- 通用扩展方法 Z.ExtensionMethods
- 云存储:七牛云 MQiniu.Core
- 分布式事务、EventBus:DotNeteCore.CAP
- GitHub第三方授权登录AspNet.Security.OAuth.GitHub
- QQ第三方授权登录AspNet.Security.OAuth.QQ
- Gitee第三方授权登录AspNet.Security.OAuth.Gitee
- Docker
- Azure DevOps
- GitHub Action
- DDD(Domain-Driven Design)领域驱动设计
- Logging(日志)
- DevOps(CI/CD,自动化构建)
- Database Migrations(数据库自动迁移)
- Authentication(身份认证)
- Authorization(授权)
- Separation of Concerns(关注点分离)
- Repository Pattern(仓储模式)
- SOLID Principles(单一职责)
- Clean Code(代码整洁之道)
- src
- LinCms.Web:接口API(ASP.NET Core)
- LinCms.Application:应用服务
- LinCms.Application.Contracts:DTO,数据传输对象,应用服务接口
- LinCms.Infrastructure:基础设施,数据库持久性的操作
- LinCms.Core:该应用的核心,实体类,通用操作类,AOP扩展,分页对象,基础依赖对象接口,时间扩展方法,当前用户信息,异常类,值对象
- test
前端需要开发者比较熟悉 Vue 的,另外需要了解 ES6,axios,ElementUi、webpack、Vuex、Vue-Router等等等
- .NET Core搬砖队(lin-cms-dotnetcore) QQ群号:762828442
微信搜索:dotNET搬砖队
https://github.com/luoyunchong/lin-cms-dotnetcore/wiki/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97

