---
order: 3
---
# 默认首页

首页是指用户登录后第一眼看到的页面（不是指登录页面，而是指用户登录成功后默认访问到的页面）。在不同业务场景下，用户希望登录后能直接看到符合各自业务场景的首页，如：

1. 领导用户登录后直接进入“主营业看板”应用
2. IT部门用户登录后进入项目的“监控”模块
3. 管理员登录后进入到项目列表页面
4. 所有非管理员用户登录后默认显示某个应用页面

首页有多种设置方式个人设置、用户组设置、系统全局都可以设置首页，默认情况下，系统也会根据用户的权限自动确定当前用户的首页，本文重点介绍系统全局首页设置以及根据权限确定首页的逻辑规则。

## 设置系统默认首页{#set-index}

全局首页设置在**系统设置**>**基本**>**默认首页**中进行：

![全局默认首页设置](./images/2021-04-16-15-21-33.png)

系统支持四种首页类型，并会根据访问设备自动导航首页：

- 桌面端首页
- 移动端首页：没有设置时，会使用桌面端首页
- 外部用户桌面端首页：没有设置时，会使用桌面端首页
- 外部用户移动端首页：没有设置时，会使用移动端首页

:::tip
系统包含了两套用户，其中外部用户是可以脱离系统组织机构的，二者有各自的适用场景，更多说明可查看文档[用户管理-外部用户](../../permission/users.md#external-users)。
:::

首页路径可以输入相对地址、绝对地址，也可以输入带有宏表达式的动态路径，如：

1. `/example` - 名为 example 的项目地址
2. `/example/${$user.id}` - 使用宏动态构建首页地址，更多说明见[带有宏表达式的动态首页路径](#macro-url)。
3. 以`http://`或者`https://`开头的完整URL，比如 `http://example.com/`，需要注意的是对于这种地址，系统将会直接跳转过去，而不会判断该页面是否有权限被当前登录的用户所访问。

### 带有宏表达式的动态首页路径{#macro-url}

首页路径可以输入宏，宏中通常需要使用到[`$user`](../../exp/var/$user.md)表达式对象。

示例1：

1. 需求描述：admin用户组的用户登录，进入到管理界面；其它用户进入到demo门户页面
2. 表达式：`${IF(USER_INGROUP('admin'),"/DEMO","/DEMO/app/DEMO.app")}`

示例2：

1. 需求描述：admin用户登录，进入到管理界面；其它用户进入到demo门户页面
2. 表达式：`${IF([用户]='admin',"/DEMO","/DEMO/app/DEMO.app")}`

示例3：

1. 需求描述：admin用户组的用户登录，进入到管理界面；用户组名称为**manage**的用户登录，进入到DEMO门户；其它用户进入到SuperPage门户
2. 表达式：`${CASE WHEN USER_INGROUP('admin') THEN "/DEMO" WHEN USER_INGROUP('manage') THEN "/DEMO/app/DEMO.app" ELSE "/DEMO/app/ap.app" END}`

<!---
   ## 其他相关首页设置{#other-settings}

首页有多种设置方式，优先级从高到底依次如下：

1. **个人设置中的首页设置**，可以在个人设置中或用户管理中设置，仅作用于当前设置的用户
2. **用户组中的首页设置**，作用于组内用户，当一个用户有多个组都有首页设置时选用其中一个使用
3. **系统全局首页设置**

:::tip
个人设置和用户组中的设置优先级高于系统设置。
:::
-->

## 首页选择策略{#index-politics}

用户登录时，系统会根据当前用户的个人设置、所在用户组的设置、系统设置以及当前用户的权限动态的决定当前用户应该显示哪个首页，规则优先级如下：

1. 如果存在个人设置中的首页设置，那么直接使用个人设置中的首页设置。
2. 如果用户所在的用户组有首页设置，那么使用用户组的首页设置。如果存在多个用户组都有首页设置，那么取第一个用户组（按用户组ID升序排序）的设置。
3. 如果存在系统首页设置并且当前用户对首页有访问权限，则直接进入首页。
4. 若对设置的首页没有权限，则会自动判断用户所拥有的权限决定首页，规则如下：
   1. 取所设置首页地址所在的项目，如果用户对该项目有某“应用”的访问权限，那么首页为该应用。
   2. 若是仅对一个项目（忽略`系统数据`项目）有权限，如果用户对该项目有某“应用”的访问权限，那么首页为该应用。
   3. 如果当前用户使用移动设备访问，那么会优先选用支持移动设备的“应用”访问。
   4. 如果用户仅对一个仪表板、报表或页面有权限，那么直接显示有权限的哪个页面。
   5. 若是对多个以上资源有权限且未[限制访问默认管理界面](../../project-manage/basic-setting.md#restrict-metamgr)，则直接跳转到`/projects` 页面，进入项目列表。
   6. 若是有新建项目权限，则跳转到`/projects` 页面，进入项目列表。
5. 如果以上规则都没有匹配，那么显示[无权限访问页面](../../dev/script/system-pages/status-pages.md#403)。

## 首页地址栏URL{#short-url}

最终访问到的首页地址，将保留来自用户主动在URL上输入的参数和首页设置中的参数，比如：

用户输入的地址为:

```sh
http://succbi.example.com/?param1=pa
```

首页所设置的地址为：

```sh
/DEMO/dashboard?param2=test
```

最终定位到的首页地址将会是:

```sh
http://succbi.exmaple.com/DEMO/dashboard?param1=pa&param2=test
```

如果希望在地址栏显示简短的URL地址，可以参考[应用设置之短路径](../../app/app-settings.md#shorturls)进行设置。

## 常见问题{#faq}

### 首页设置为门户应用后如何默认显示门户内某个页面{#faq-1}

门户应用内部可以自己设置的，见[如何定位应用的首页](../../app/portal-page/FAQ/如何定位应用的首页.md)。
