Compare commits

...

1 Commits

Author SHA1 Message Date
tomsun28
2026d0e34f [monitor]feature: support roles permission, admin-user-guest 2022-04-17 21:26:22 +08:00
7 changed files with 245 additions and 108 deletions

View File

@@ -48,72 +48,102 @@ sidebar_label: Docker方式部署
配置文件内容参考 项目仓库[/script/sureness.yml](https://gitee.com/dromara/hertzbeat/blob/master/script/sureness.yml)
```yaml
resourceRole:
- /account/auth/refresh===post===[role1,role2,role3,role4]
excludedResource:
- /account/auth/**===*
- /===get
- /i18n/**===get
- /apps/hierarchy===get
- /console/**===get
- /**/*.html===get
- /**/*.js===get
- /**/*.css===get
- /**/*.ico===get
- /**/*.ttf===get
- /**/*.png===get
- /**/*.gif===get
resourceRole:
- /account/auth/refresh===post===[admin,user,guest]
- /apps/**===get===[admin,user,guest]
- /monitor/**===get===[admin,user,guest]
- /monitor/**===post===[admin,user]
- /monitor/**===put===[admin,user]
- /monitor/**===delete==[admin]
- /monitors/**===get===[admin,user,guest]
- /monitors/**===post===[admin,user]
- /monitors/**===put===[admin,user]
- /monitors/**===delete===[admin]
- /alert/**===get===[admin,user,guest]
- /alert/**===post===[admin,user]
- /alert/**===put===[admin,user]
- /alert/**===delete===[admin]
- /alerts/**===get===[admin,user,guest]
- /alerts/**===post===[admin,user]
- /alerts/**===put===[admin,user]
- /alerts/**===delete===[admin]
- /notice/**===get===[admin,user,guest]
- /notice/**===post===[admin,user]
- /notice/**===put===[admin,user]
- /notice/**===delete===[admin]
- /summary/**===get===[admin,user,guest]
- /summary/**===post===[admin,user]
- /summary/**===put===[admin,user]
- /summary/**===delete===[admin]
excludedResource:
- /account/auth/**===*
- /===get
- /i18n/**===get
- /apps/hierarchy===get
# web ui 静态资源
- /console/**===get
- /**/*.html===get
- /**/*.js===get
- /**/*.css===get
- /**/*.ico===get
- /**/*.ttf===get
- /**/*.png===get
- /**/*.gif===get
- /**/*.png===*
- /swagger-resources/**===get
- /v2/api-docs===get
- /v3/api-docs===get
# 用户账户信息
# 下面有 admin tom lili 三个账户
# eg: admin 拥有[role1,role2]角色,密码为admin
# eg: tom 拥有[role1,role2,role3],密码为tom@123
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
account:
- appId: admin
credential: admin
role: [role1,role2]
- appId: tom
credential: tom@123
role: [role1,role2,role3]
- appId: lili
# 注意 Digest认证不支持加盐加密的密码账户
# 加盐加密的密码,通过 MD5(password+salt)计算
# 此账户的原始密码为 lili
credential: 1A676730B0C7F54654B0E09184448289
salt: 123
role: [role1,role2]
# swagger ui 资源
- /swagger-resources/**===get
- /v2/api-docs===get
- /v3/api-docs===get
account:
- appId: admin
credential: admin
role: [admin,user]
- appId: tom
credential: tom@123
role: [user]
- appId: guest
credential: guest
role: [guest]
- appId: lili
# 注意 Digest认证不支持加盐加密的密码账户
# 加盐加密的密码,通过 MD5(password+salt)计算
# 此账户的原始密码为 lili
credential: 1A676730B0C7F54654B0E09184448289
salt: 123
role: [guest]
```
修改sureness.yml的如下**部分参数****[注意⚠sureness配置的其它默认参数需保留]**
```yaml
# 用户账户信息
# 下面有 admin tom lili 三个账户
# eg: admin 拥有[role1,role2]角色,密码为admin
# eg: tom 拥有[role1,role2,role3],密码为tom@123
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
account:
- appId: admin
credential: admin
role: [role1,role2]
- appId: tom
credential: tom@123
role: [role1,role2,role3]
- appId: lili
# 注意 Digest认证不支持加盐加密的密码账户
# 加盐加密的密码,通过 MD5(password+salt)计算
# 此账户的原始密码为 lili
credential: 1A676730B0C7F54654B0E09184448289
salt: 123
role: [role1,role2]
# 用户账户信息
# 下面有 admin tom lili 三个账户
# eg: admin 拥有[admin,user]角色,密码为admin
# eg: tom 拥有[user],密码为tom@123
# eg: lili 拥有[guest],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
account:
- appId: admin
credential: admin
role: [admin,user]
- appId: tom
credential: tom@123
role: [user]
- appId: guest
credential: guest
role: [guest]
- appId: lili
# 注意 Digest认证不支持加盐加密的密码账户
# 加盐加密的密码,通过 MD5(password+salt)计算
# 此账户的原始密码为 lili
credential: 1A676730B0C7F54654B0E09184448289
salt: 123
role: [guest]
```
6. 启动HertzBeat Docker容器

View File

@@ -51,25 +51,30 @@ sidebar_label: 安装包方式部署
修改sureness.yml的如下**部分参数****[注意⚠sureness配置的其它默认参数需保留]**
```yaml
# 用户账户信息
# 下面有 admin tom lili 三个账户
# eg: admin 拥有[role1,role2]角色,密码为admin
# eg: tom 拥有[role1,role2,role3],密码为tom@123
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
account:
- appId: admin
credential: admin
role: [role1,role2]
- appId: tom
credential: tom@123
role: [role1,role2,role3]
- appId: lili
# 注意 Digest认证不支持加盐加密的密码账户
# 加盐加密的密码,通过 MD5(password+salt)计算
# 此账户的原始密码为 lili
credential: 1A676730B0C7F54654B0E09184448289
salt: 123
role: [role1,role2]
# 用户账户信息
# 下面有 admin tom lili 三个账户
# eg: admin 拥有[admin,user]角色,密码为admin
# eg: tom 拥有[user],密码为tom@123
# eg: lili 拥有[guest],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
account:
- appId: admin
credential: admin
role: [admin,user]
- appId: tom
credential: tom@123
role: [user]
- appId: guest
credential: guest
role: [guest]
- appId: lili
# 注意 Digest认证不支持加盐加密的密码账户
# 加盐加密的密码,通过 MD5(password+salt)计算
# 此账户的原始密码为 lili
credential: 1A676730B0C7F54654B0E09184448289
salt: 123
role: [guest]
```
5. 部署启动

View File

@@ -0,0 +1,14 @@
{
"title": {
"message": "Blog",
"description": "The title for the blog used in SEO"
},
"description": {
"message": "Blog",
"description": "The description for the blog used in SEO"
},
"sidebar.title": {
"message": "Recent posts",
"description": "The label for the left sidebar"
}
}

View File

@@ -2,10 +2,35 @@
# 加载到匹配字典的资源,也就是需要被保护的,设置了所支持角色访问的资源
# 没有配置的资源也默认被认证保护,但不鉴权
# eg: /api/v1/source1===get===[role2] 表示 /api/v2/host===post 这条资源支持 role2 这一种角色访问
# eg: /api/v1/source1===get===[admin] 表示 /api/v2/host===post 这条资源支持 admin 这一种角色访问
# eg: /api/v1/source2===get===[] 表示 /api/v1/source2===get 这条资源不支持任何角色访问
resourceRole:
- /account/auth/refresh===post===[role1,role2,role3,role4]
- /account/auth/refresh===post===[admin,user,guest]
- /apps/**===get===[admin,user,guest]
- /monitor/**===get===[admin,user,guest]
- /monitor/**===post===[admin,user]
- /monitor/**===put===[admin,user]
- /monitor/**===delete==[admin]
- /monitors/**===get===[admin,user,guest]
- /monitors/**===post===[admin,user]
- /monitors/**===put===[admin,user]
- /monitors/**===delete===[admin]
- /alert/**===get===[admin,user,guest]
- /alert/**===post===[admin,user]
- /alert/**===put===[admin,user]
- /alert/**===delete===[admin]
- /alerts/**===get===[admin,user,guest]
- /alerts/**===post===[admin,user]
- /alerts/**===put===[admin,user]
- /alerts/**===delete===[admin]
- /notice/**===get===[admin,user,guest]
- /notice/**===post===[admin,user]
- /notice/**===put===[admin,user]
- /notice/**===delete===[admin]
- /summary/**===get===[admin,user,guest]
- /summary/**===post===[admin,user]
- /summary/**===put===[admin,user]
- /summary/**===delete===[admin]
# 需要被过滤保护的资源,不认证鉴权直接访问
# /api/v1/source3===get 表示 /api/v1/source3===get 可以被任何人访问 无需登录认证鉴权
@@ -31,20 +56,23 @@ excludedResource:
# 用户账户信息
# 下面有 admin tom lili 三个账户
# eg: admin 拥有[role1,role2]角色,密码为admin
# eg: tom 拥有[role1,role2,role3],密码为tom@123
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
# eg: admin 拥有[admin,user]角色,密码为admin
# eg: tom 拥有[user],密码为tom@123
# eg: lili 拥有[guest],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
account:
- appId: admin
credential: admin
role: [role1,role2]
role: [admin,user]
- appId: tom
credential: tom@123
role: [role1,role2,role3]
role: [user]
- appId: guest
credential: guest
role: [guest]
- appId: lili
# 注意 Digest认证不支持加盐加密的密码账户
# 加盐加密的密码,通过 MD5(password+salt)计算
# 此账户的原始密码为 lili
credential: 1A676730B0C7F54654B0E09184448289
salt: 123
role: [role1,role2]
role: [guest]

View File

@@ -2,10 +2,35 @@
# 加载到匹配字典的资源,也就是需要被保护的,设置了所支持角色访问的资源
# 没有配置的资源也默认被认证保护,但不鉴权
# eg: /api/v1/source1===get===[role2] 表示 /api/v2/host===post 这条资源支持 role2 这一种角色访问
# eg: /api/v1/source1===get===[admin] 表示 /api/v2/host===post 这条资源支持 admin 这一种角色访问
# eg: /api/v1/source2===get===[] 表示 /api/v1/source2===get 这条资源不支持任何角色访问
resourceRole:
- /account/auth/refresh===post===[role1,role2,role3,role4]
- /account/auth/refresh===post===[admin,user,guest]
- /apps/**===get===[admin,user,guest]
- /monitor/**===get===[admin,user,guest]
- /monitor/**===post===[admin,user]
- /monitor/**===put===[admin,user]
- /monitor/**===delete==[admin]
- /monitors/**===get===[admin,user,guest]
- /monitors/**===post===[admin,user]
- /monitors/**===put===[admin,user]
- /monitors/**===delete===[admin]
- /alert/**===get===[admin,user,guest]
- /alert/**===post===[admin,user]
- /alert/**===put===[admin,user]
- /alert/**===delete===[admin]
- /alerts/**===get===[admin,user,guest]
- /alerts/**===post===[admin,user]
- /alerts/**===put===[admin,user]
- /alerts/**===delete===[admin]
- /notice/**===get===[admin,user,guest]
- /notice/**===post===[admin,user]
- /notice/**===put===[admin,user]
- /notice/**===delete===[admin]
- /summary/**===get===[admin,user,guest]
- /summary/**===post===[admin,user]
- /summary/**===put===[admin,user]
- /summary/**===delete===[admin]
# 需要被过滤保护的资源,不认证鉴权直接访问
# /api/v1/source3===get 表示 /api/v1/source3===get 可以被任何人访问 无需登录认证鉴权
@@ -31,20 +56,23 @@ excludedResource:
# 用户账户信息
# 下面有 admin tom lili 三个账户
# eg: admin 拥有[role1,role2]角色,密码为admin
# eg: tom 拥有[role1,role2,role3],密码为tom@123
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
# eg: admin 拥有[admin,user]角色,密码为admin
# eg: tom 拥有[user],密码为tom@123
# eg: lili 拥有[guest],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
account:
- appId: admin
credential: admin
role: [role1,role2]
role: [admin,user]
- appId: tom
credential: tom
role: [role1,role2,role3]
credential: tom@123
role: [user]
- appId: guest
credential: guest
role: [guest]
- appId: lili
# 注意 Digest认证不支持加盐加密的密码账户
# 加盐加密的密码,通过 MD5(password+salt)计算
# 此账户的原始密码为 lili
credential: 1A676730B0C7F54654B0E09194448289
credential: 1A676730B0C7F54654B0E09184448289
salt: 123
role: [role1,role2]
role: [guest]

View File

@@ -2,10 +2,35 @@
# 加载到匹配字典的资源,也就是需要被保护的,设置了所支持角色访问的资源
# 没有配置的资源也默认被认证保护,但不鉴权
# eg: /api/v1/source1===get===[role2] 表示 /api/v2/host===post 这条资源支持 role2 这一种角色访问
# eg: /api/v1/source1===get===[admin] 表示 /api/v2/host===post 这条资源支持 admin 这一种角色访问
# eg: /api/v1/source2===get===[] 表示 /api/v1/source2===get 这条资源不支持任何角色访问
resourceRole:
- /account/auth/refresh===post===[role1,role2,role3,role4]
- /account/auth/refresh===post===[admin,user,guest]
- /apps/**===get===[admin,user,guest]
- /monitor/**===get===[admin,user,guest]
- /monitor/**===post===[admin,user]
- /monitor/**===put===[admin,user]
- /monitor/**===delete==[admin]
- /monitors/**===get===[admin,user,guest]
- /monitors/**===post===[admin,user]
- /monitors/**===put===[admin,user]
- /monitors/**===delete===[admin]
- /alert/**===get===[admin,user,guest]
- /alert/**===post===[admin,user]
- /alert/**===put===[admin,user]
- /alert/**===delete===[admin]
- /alerts/**===get===[admin,user,guest]
- /alerts/**===post===[admin,user]
- /alerts/**===put===[admin,user]
- /alerts/**===delete===[admin]
- /notice/**===get===[admin,user,guest]
- /notice/**===post===[admin,user]
- /notice/**===put===[admin,user]
- /notice/**===delete===[admin]
- /summary/**===get===[admin,user,guest]
- /summary/**===post===[admin,user]
- /summary/**===put===[admin,user]
- /summary/**===delete===[admin]
# 需要被过滤保护的资源,不认证鉴权直接访问
# /api/v1/source3===get 表示 /api/v1/source3===get 可以被任何人访问 无需登录认证鉴权
@@ -23,7 +48,7 @@ excludedResource:
- /**/*.ttf===get
- /**/*.png===get
- /**/*.gif===get
- /**/*.png===*
- /**/*.png===*
# swagger ui 资源
- /swagger-resources/**===get
- /v2/api-docs===get
@@ -31,20 +56,23 @@ excludedResource:
# 用户账户信息
# 下面有 admin tom lili 三个账户
# eg: admin 拥有[role1,role2]角色,密码为admin
# eg: tom 拥有[role1,role2,role3],密码为tom@123
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
# eg: admin 拥有[admin,user]角色,密码为admin
# eg: tom 拥有[user],密码为tom@123
# eg: lili 拥有[guest],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
account:
- appId: admin
credential: admin
role: [role1,role2]
role: [admin,user]
- appId: tom
credential: tom@123
role: [role1,role2,role3]
role: [user]
- appId: guest
credential: guest
role: [guest]
- appId: lili
# 注意 Digest认证不支持加盐加密的密码账户
# 加盐加密的密码,通过 MD5(password+salt)计算
# 此账户的原始密码为 lili
credential: 1A676730B0C7F54654B0E09184448289
salt: 123
role: [role1,role2]
role: [guest]

View File

@@ -26,8 +26,8 @@ const CODE_MESSAGE: { [key: number]: string } = {
202: '一个请求已经进入后台排队(异步任务)。',
204: '删除数据成功。',
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
401: '用户没有权限(令牌、用户名、密码错误)。',
403: '用户无权限访问此资源。',
401: '用户认证信息异常。',
403: '用户无此操作权限。',
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
406: '请求的格式不可得。',
409: '请求与服务器端目标资源的当前状态相冲突',
@@ -65,7 +65,11 @@ export class DefaultInterceptor implements HttpInterceptor {
private checkStatus(ev: HttpResponseBase): void {
const errorText = CODE_MESSAGE[ev.status] || ev.statusText;
console.warn(` ${ev.status}: ${ev.url}`, errorText);
this.notification.error(` ${ev.status}: ${ev.url}`, errorText);
if (ev.status == 403) {
this.notification.error(` ${ev.status}: ${errorText}`, '');
} else {
this.notification.error(` ${ev.status}: ${ev.url}`, errorText);
}
}
/**