BootstrapAdmin/README.md

343 lines
11 KiB
Markdown
Raw Normal View History

2018-09-25 14:54:59 +08:00
# BootstrapAdmin
## 项目介绍
使用HTML5+jQuery + NET Core 2.2 + Bootstrap4.1 + PetaPoco构建的后台管理平台主要功能如下
1. 通过配置与前台网站集成
2. 构建前台系统分层级菜单
3. 提供单点登录
4. 集成系统认证授权模块
5. 提供角色,部门,用户,菜单授权
角色对用户授权
角色对菜单授权
角色对部门授权
部门对用户授权
6. 提供字典表用于前台网站个性化配置
优势:前台系统,不用编写登录、授权、认证模块;只负责编写业务模块即可
2018-09-25 14:54:59 +08:00
## 数据库
数据库支持列表如下:
1. MSSQL
2. Oracle
3. SQLite
4. MySql
5. MariaDB
6. Postgresql
7. Firebird
8. MsAccess
9. MongoDB
2018-09-25 14:54:59 +08:00
## 功能列表
1. 系统登录
支持新用户注册
2. 后台管理
3. 个人中心
4. 返回前台
通过字典表配置,可以直接返回前台页面
5. 网站设置
设置网站标题与页脚;设置网站样式;查看系统缓存
6. 菜单管理
7. 用户管理
8. 角色管理
9. 部门管理
10. 字典表维护
11. 站内消息
12. 任务管理
13. 通知管理
14. 系统日志
15. 程序异常
16. 工具集合
2018-09-25 14:54:59 +08:00
## 安装教程
2018-12-25 14:08:04 +08:00
1. 安装 .net core 2.2 sdk [官方网址](http://www.microsoft.com/net/download)
2. 安装 Visual Studio 2017 [官方网址](https://visualstudio.microsoft.com/vs/getting-started/)
2018-09-25 14:54:59 +08:00
3. 获取本项目代码 [BootstrapAdmin](https://gitee.com/LgbAdmin/BootstrapAdmin)
4. 安装数据库
以微软MSSQL为例执行解决方案中SQLServer目录物理硬盘中DatabaseScripts目录下Install.sql脚本创建数据库
5. 初始化数据
2018-12-25 14:08:04 +08:00
执行对应目录下InitData.sql脚本
6. 拷贝Longbow.lic文件
2018-12-25 14:08:04 +08:00
拷贝Scripts目录下Longbow.lic文件到bin目录下
7. 系统登录用户名与口令
用户名Admin
密码123789
## 解决方案结构
### Client
前台页面Demo工程
#### Bootstrap.Client
前台Web工程
#### Bootstrap.Client.DataAccess
前台Web工程数据库操作类
### MongoDB
MongoDB数据库Collection导入文件
### MySQL
MySQL数据库脚本与初始化脚本文件
### Postgresql
Postgresql 数据库脚本与初始化脚本文件
### Scripts
Longbow.lic 文件运行时需要拷贝到工程bin目录下
### SQLite
SQLite 数据库脚本与初始化脚本文件
### SQLServer
SQLServer 数据库脚本与初始化脚本文件
### Bootstrap.Admin
后台管理系统Web工程
### Bootstrap.DataAccess
后台管理系统数据库操作工程
### Bootstrap.DataAccess.MongoDB
后台管理系统MongoDB数据库操作工程
### UnitTest
后台管理系统单元测试
## 配置说明
1. 错误日志配置
```json
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
},
"LgbFile": {
"IncludeScopes": true,
"LogLevel": {
"Default": "Error"
},
"FileName": "Error\\Log.log"
}
```
### FileName:
配置系统错误日志所在文件夹与文件名以上面代码为例系统错误日志自动记录在应用程序目录下Error目录内文件名为Log{Date}.log
MacOS系统设置为
```json
"FileName": "Error/Log.log"
```
2. 数据库连接配置
```json
"ConnectionStrings": {
"ba": "Data Source=.;Initial Catalog=BootstrapAdmin;User ID=sa;Password=sa"
},
"MongoDB": "BootstrapAdmin",
"DB": [
{
"Enabled": false
},
{
"Enabled": false,
"ProviderName": "Sqlite",
"ConnectionStrings": {
"ba": "Data Source=BootstrapAdmin.db;"
}
},
{
"Enabled": false,
"ProviderName": "MySql",
"ConnectionStrings": {
"ba": "Server=localhost;Database=BA;Uid=argozhang;Pwd=argo@163.com;SslMode=none;"
}
},
{
"Enabled": false,
"ProviderName": "Npgsql",
"ConnectionStrings": {
"ba": "Server=localhost;Database=BootstrapAdmin;User ID=argozhang;Password=argo@163.com;"
}
},
{
"Enabled": true,
"Widget": "Bootstrap.DataAccess.MongoDB",
"ConnectionStrings": {
"ba": "mongodb://10.211.55.2:27017"
}
}
]
```
本项目使用的是PetaPoco Mini ORM框架为基础所以数据库驱动未显示引用到项目中切换数据库时需要自行根据自己设置的数据库加载自己的数据库驱动组件
### ConnectionStrings:
默认数据库连接字符串
### DB:
数据库配置项
Enabled:    是否生效
ProviderName:    数据库类型未配置默认使用Microsoft SQLServer
Widget:    数据库实体类程序集此程序集负责具体数据库CRUD操作未指定时默认使用Bootstrap.DataAccess程序集
ConnectionStrings:    数据库连接字符串,未配置使用上面的默认数据库连接字符串
以上面代码为例由于前面的配置项中的Enabled均为false最后一个MongoDB配置项为true则系统采用此配置使用MongoDB作为系统数据库根据其配置项内的ConnectionStrings下的数据库连接字符串开发环境中需要自己额外显示增加MongoDB数据库驱动组件([Nuget]MongoDB.Driver)的引用以及增加对Bootstrap.DataAccess.MongoDB工程的引用发布生产环境中需要自己拷贝相关依赖文件到bin目录下
### MongoDB:
MongoDB DatabaseName
3. 跨域访问配置
```json
"AllowOrigins": "http://localhost,http://10.15.63.218"
```
### AllowOrigins
设置第三方网站跨域访问后台管理系统主机头,多个站点使用逗号(,)分割
4. WebApi JWT Token授权访问配置
```json
"TokenValidateOption": {
"Issuer": "BA",
"Audience": "api",
"Expires": 5,
"SecurityKey": "BootstrapAdmin-V1.1"
}
```
系统默认提供WebApi JWT Token登录方式Token获取地址为 [Post]/api/Login客户端调用添加Header Bear [Token]即可登录
5. 单点登录 SSO 配置
```json
"KeyPath": "..\\keys",
"ApplicationName": "__bd__",
"ApplicationDiscriminator": "BootstrapAdmin",
"DisableAutomaticKeyGeneration": false
```
KeyPath:   单点登录Key保存路径MacOS设置为
```json
"KeyPath": "../keys",
```
ApplicationName:   应用程序名称与第三方系统配置文件内的ApplicationName值保持一致
ApplicationDiscriminator:   应用程序名称与第三方系统配置文件内的ApplicationDiscriminator值保持一致
DisableAutomaticKeyGeneration:   第三方系统配置文件设置为true后台管理系统设置为false这样第三方系统登录自动导航到后台管理系统内实现单点登录入口统一
#### 前台系统配置
```json
"AuthHost": "http://localhost:50852",
```
AuthHost:   配置为本系统地址如果发布成应用程序如BA此处配置应配置成包括PathBase的形式http://localhost/BA
6. 系统日志保存时间间隔配置
```json
"KeepExceptionsPeriod": 12,
"KeepLogsPeriod": 12,
"CookieExpiresDays": 7,
```
KeepExceptionsPeriod:   系统异常日志数据库保留时间间隔默认为12个月
KeepLogsPeriod:   系统操作日志数据库保留时间间隔默认为7个月
CookieExpiresDays:   保存登录信息时间间隔默认为7天
7. 系统数据缓存配置
```json
"LongbowCache": {
"Enabled": true,
"CorsItems": [
{
"Enabled": true,
"Key": "ba",
"Url": "http://localhost/BA/CacheList.axd",
"Desc": "后台管理数据缓存接口",
"Self": true
},
{
"Enabled": true,
"Key": "Pallet",
"Url": "http://localhost/WebConsole/CacheList.axd",
"Desc": "托盘组垛系统",
"Self": false
}
],
"CacheItems": [
{
"Enabled": true,
"Key": "RoleHelper-RetrieveRolesByUserName",
"Interval": 600,
"SlidingExpiration": true,
"Desc": "指定用户角色数据缓存"
}
]
}
```
### LongbowCache:
此组件负责系统底层数据缓存
Enabled:   是否启用数据缓存true为启用第一次获取数据时从数据库内获取然后缓存在内存中再指定配置的时间内过期时间单位为秒以上面代码为例缓存项RoleHelper-RetrieveRolesByUserName将会在内存中缓存600秒
### CorsItems:
跨域缓存清理配置,由于本项目是后台管理,必定有前台系统页面与之配合(前台页面会调用后台系统的api或者数据),后台配置更改后前台页面需要使用新的数据,如果开启了缓存,必须要及时更新缓存,否则前台系统数据一定是过期的,本配置小节就是负责跨域数据同步的
Enabled:   是否启用跨域缓存清理功能
Key:   配置项键值
Url:   需要缓存清理的站点地址
Desc:   描述信息
Self:   是否为系统本身
#### 本配置非常重要
如果配置未成功可以暂时将根配置的Enabled设置为false暂时关闭使用数据缓存功能
### CacheItems:
Key:   缓存项键值
Interval:   缓存时间,单位为秒
SlidingExpiration:   缓存延时设置true时每次访问后指定秒数后过期false时第一次访问进行缓存后指定秒数后过期
## 常见问题Q&A
1. 下载源代码后编译不通过报错非常多都是NETCore系统dll缺失或者不兼容等异常信息
问题原因:   NET Core 框架加载不正确,可使用
```console
dotnet --version
```
输入结果为下面为正确
```console
2.2.200-preview-009648
```
命令行查看输出是否为2.2版本,注意后面可能有小版本号如 preview-009648 可以去控制面板程序安装与卸载列表中查看,我给出的示例是我本地环境的真实数据
解决办法:   强制项目使用NETCore 2.2 SDK版本
在项目的根目录打开cmd执行命令即可
```console
dotnet new global.json --sdk-version <SDK版本号>
```
global.json 文件内容:
```json
{
"sdk": {
"version": "2.2.200-preview-009648"
}
}
```
[NETCore SDK版本查询](https://dotnet.microsoft.com/download/dotnet-core/2.2)
## 项目截图
### 登录截图
2018-09-25 14:54:59 +08:00
1. 手机登录
![输入图片说明](https://images.gitee.com/uploads/images/2018/0925/171428_a581e157_554725.png "Loginm.png")
2. 电脑登录
![输入图片说明](https://images.gitee.com/uploads/images/2018/0925/171640_2224523f_554725.png "Login.png")
3. 前台首页
![输入图片说明](https://images.gitee.com/uploads/images/2018/0925/171658_f480f25f_554725.png "PalletHome.png")
4. 后台首页
![输入图片说明](https://images.gitee.com/uploads/images/2018/0925/171712_d00fae48_554725.png "BAHome.png")
## 参与贡献
2018-09-25 14:54:59 +08:00
1. Fork 本项目
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request